簡體   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