2

在我们的应用程序中,我们允许用户打开文件和目录。

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命令失败。

有没有一种简单的方法来生成这些短名称?还是有其他解决方法?

4

3 回答 3

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 启动命令很重要,因为文件名可能包含空格。这是一个特点。

于 2009-06-09T21:26:31.193 回答
0

试试这个:http ://dolf.trieschnigg.nl/eightpointthree/eightpointthree.html

于 2009-06-09T21:17:00.387 回答
0

或者你可以试试:

Runtime.getRuntime().exec(
  new String[] { System.getenv("windir") + "\\system32\\rundll32.exe",
    "shell32.dll,ShellExec_RunDLL", "http://www.stackoverflow.com" });

来源:http ://www.rgagnon.com/javadetails/java-0014.html

于 2009-06-10T06:56:46.297 回答