Java文件路径中的空间到可执行文件

时间:2013-05-19 20:42:24

标签: java

好的,我知道这可能是一个愚蠢的问题,但我对Java很新,而且它可能很容易回答。我要做的是制作一个程序,使用文件路径打开Firefox,但似乎文件路径有问题。我做了一些研究并使用双斜杠来使转义字符无效,但它仍然不起作用。我认为这与某些目录名称中有空格的事实有关。这是我的代码:

import java.io.IOException;

public class Automation {

public static void main(String[] args) throws IOException {
        Process p = Runtime.getRuntime().exec("C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");
    }
}

我知道它非常简单,但我还是无法弄明白。任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:3)

Process p = Runtime.getRuntime().exec("\"C:\\Program Files (x86)\\Mozilla firefox\\firefox.exe\"");

...或Java 7针对Windows ...

String[] command = new String[] {
    "C:" +
    File.separator + 
    "Program Files (x86)" +
    File.separator + 
    "Mozilla firefox" + 
    File.separator + 
    "firefox.exe"    
};
Process p = Runtime.getRuntime().exec(command);

答案 1 :(得分:1)

"\"C:\\ .......\""

所以你可以“逃避”空白。

答案 2 :(得分:1)

解决问题的理想解决方案应该是这样的。

String [] cmds = new String [1];
cmds[0] = "C:\\Program Files (x86)\\Mozilla firefox\\firefox.exe";
Process p = Runtime.getRuntime().exec(cmds);

这是因为Runtime.getRuntime().exec()实际上并不像命令行解释器那样执行程序。因此,当路径中有空格时,您需要使用参数数组。你可以在这个数组中提供额外的标志/选项(例如:open)。

这是一些额外的信息。据我所知,Windows对正斜杠(/)非常满意,因为Windows API接受正斜率和反斜杠(从MS DOS 2.0开始我认为)。例如你可以做dir "c:/Program Files (x86)"将工作正常给你目录列表。此外,没有空格Process p = Runtime.getRuntime().exec("C:/SomeProgram/someprogram.exe");可以正常工作。但是,建议的方法是从环境中获取文件分隔符。这是使用File.separator