我在下面的代碼中偶然發現了一些奇怪的東西。我想使用Runtime.getRuntime().exec("some command").waitFor();
語句在Java中打開一個* .pdf文件。用雙倍空間在Java中打開PDF文件
public static void main(String[] args) {
File file = new File("C:\\test123.pdf");
try {
Runtime.getRuntime()
.exec("rundll32 url.dll,FileProtocolHandler " + file.toString())
.waitFor();
}
catch (IOException e) {
// do something
}
catch (InterruptedException e) {
// do something
}
}
現在,當路徑包含單個空格,如它工作正常,但如果我在某些地方添加第二個空間,像
new File("C:\two spaces")這是行不通的,但它也不會放棄在警告或錯誤運行。它只是沒有做任何事情...
首先,有人可以解釋爲什麼這不起作用?第二,是否有可能解決這個問題,如果是的話(但不是解決方案如'刪除第二個空間')?
非常感謝您的幫助!
也許換到單引號中文件的路徑?此外,它可能會做某些事情...嘗試使用Process和ProcessInfo對象,將STDOut和Err流重定向到控制檯。或者在windows中使用>>操作符,然後在文本文件的路徑中作爲.exe調用中字符串的最後部分,以指示該過程的輸出。我敢打賭,第二個空間讓shell在第一個空間切換到命令之後思考一切,並且拋出一個錯誤。 –