在我们的应用程序中,我们允许用户打开文件和目录。
Java 6为我们提供了......
java.awt.Desktop.getDesktop().open(file);
效果很好。但是,由于我们需要确保Java 5兼容性,我们还通过调用start
中的cmd.exe
命令来实现打开文件的方法...
String command = "cmd.exe start ...";
Runtime.getRuntime().exec(command);
这就是出现问题的地方。似乎start
命令只能处理8.3文件名,这意味着任何非短(8.3)文件/目录名都会导致start
命令失败。
有没有简单的方法来生成这些短名称?或任何其他解决方法?
答案 0 :(得分:6)
尝试这样的事情
import java.io.IOException;
class StartExcel {
public static void main(String args[])
throws IOException
{
String fileName = "c:\\temp\\xls\\test2.xls";
String[] commands = {"cmd", "/c", "start", "\"DummyTitle\"",fileName};
Runtime.getRuntime().exec(commands);
}
}
将虚拟标题传递给Windows启动命令非常重要,因为文件名可能包含空格。这是一个功能。
答案 1 :(得分:0)
答案 2 :(得分:0)
或者你可以试试:
Runtime.getRuntime().exec(
new String[] { System.getenv("windir") + "\\system32\\rundll32.exe",
"shell32.dll,ShellExec_RunDLL", "http://www.stackoverflow.com" });