簡體   English   中英

可執行文件的Java文件路徑包含空格

[英]Java File path to Executable has spaces

我有一個Java程序,要求用戶輸入要執行的文件的路徑。

路徑可以是這樣的,例如: C:/ProgramFiles/Citrix/ICA Client/pnagent.exe我用此路徑創建一個File對象,並檢查以確保它存在,並檢查以確保它是文件,並且檢查以確保其可執行。 File而言,它是一個完全有效的對象。

注意: File 對象稱為“腳本”

但是,當我運行腳本時,在空格上收到錯誤。

Runtime rt = java.lang.Runtime.getRuntime();
Process pp = rt.exec(script.getAbsolutePath());

我100%第一行工作正常。 我收到的錯誤如下圖:(我將其顯示在JOptionPane中。)

錯誤圖片

消除錯誤的最佳方法是什么? 提前致謝!


嘗試的解決方案#1: Process pp = rt.exec("\\""+script.getAbsolutePath()+"\\"");

當我使用C:\\Tools\\IT Support\\bookmark.htm我得到了 在此處輸入圖片說明

編輯:
到目前為止,最可靠的方法是使用Runtime.exec(String [] cmdarray)

如果使用Runtime.exec(String command) ,則Java僅在空白處分割命令。

使用調用new StringTokenizer(command)創建的StringTokenizer將命令字符串分解為令牌,而無需進一步修改字符類別。 然后,以相同的順序將令牌生成器生成的令牌放置在新的字符串數組cmdarray中。

另請參見g ++:找不到文件

或者使用ProcessBuilder這樣的東西:

ProcessBuilder pb = new ProcessBuilder("ln", "-s", "dir1/dir2", "my dir/dir2");
Process p = pb.start();

嘗試

String[] commands = {"cmd", "/c", "start", "\"DummyTitle\"",script.getAbsolutePath()};
Runtime.getRuntime().exec(commands);

這是僅Windows的解決方案。

在您的情況下, java.awt.Desktop可能是一個更好的解決方案,因為您需要“文件關聯”機制。

public static void open(File document) throws IOException {
    Desktop dt = Desktop.getDesktop();
    dt.open(document);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM