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