【问题标题】:Is there a way to generate the 8.3 or 'short' (Windows) version of a file name in Java?有没有办法在 Java 中生成文件名的 8.3 或“短”(Windows)版本?
【发布时间】:2009-06-09 21:15:44
【问题描述】:

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

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 文件名,这意味着任何非短(8.3)文件/目录名称都会导致start 命令失败。

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

【问题讨论】:

    标签: java windows runtime.exec


    【解决方案1】:

    试试这样的

    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 启动命令很重要。这是一个特点。

    【讨论】:

      【解决方案2】:
      【解决方案3】:

      或者你可以试试:

      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

      【讨论】:

        猜你喜欢
        • 2011-11-25
        • 2019-10-15
        • 2010-12-10
        • 2016-03-09
        • 1970-01-01
        • 1970-01-01
        • 2010-10-01
        • 1970-01-01
        • 2016-02-02
        相关资源
        最近更新 更多