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