有没有办法在Java中生成8.3或“短”(Windows)版本的文件名?

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

Java 6为我们提供…

java.awt.Desktop.getDesktop().open(file); 

这很好。 但是,因为我们需要确保Java 5兼容性,所以我们还通过在cmd.exe调用start命令来实现打开文件的方法…

 String command = "cmd.exe start ..."; Runtime.getRuntime().exec(command); 

这是问题出现的地方。 看起来start命令只能处理8.3个文件名,这意味着任何非short(8.3)文件/目录名都会导致start命令失败。

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

尝试这样的事情

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

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

或者你可以尝试:

 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