好的,我知道这可能是一个愚蠢的问题,但我对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");
}
}
我知道它非常简单,但我还是无法弄明白。任何帮助表示赞赏。
答案 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