繁体   English   中英

可执行文件的 Java 文件路径中的空格

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM