[英]Spaces in Java file path to an executable
好的,我知道这可能是一个愚蠢的问题,但我对 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");
}
}
我知道它很简单,但我仍然无法弄清楚。 任何帮助表示赞赏。
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);
"\"C:\\ .......\""
所以你可以“逃避”空白。
您的问题的理想解决方案应该是这样的。
String [] cmds = new String [1];
cmds[0] = "C:\\Program Files (x86)\\Mozilla firefox\\firefox.exe";
Process p = Runtime.getRuntime().exec(cmds);
这是因为Runtime.getRuntime().exec()
实际上并不像命令行解释器那样执行程序。 因此,当路径中有空格时,您需要使用参数数组。 您可以在此数组中提供额外的标志/选项(例如:打开)。
这是一些额外的信息。 据我所知,Windows 对正斜杠( /
)非常满意,因为 Windows API 接受正斜杠和反斜杠(从MS DOS 2.0
开始)。 例如,您可以执行dir "c:/Program Files (x86)"
为您提供目录列表。 此外,没有空格Process p = Runtime.getRuntime().exec("C:/SomeProgram/someprogram.exe");
工作正常。 但是,推荐的方法是从环境中获取文件分隔符。 那是使用File.separator
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.