2013-05-07 52 views
2

我最近將我的Java版本更新爲JDK7u21。在更新21的release notes中,使用Runtime.exec明確提到了有關問題。ProcessBuilder和帶空間的命令

因此,我想更改我的代碼以使用ProcessBuilder。我正在嘗試執行一個帶有空格的命令。但即使使用ProcessBuilder爲此,我也出現在C:\ Users \ Parag.Joshi \ Documents中,而不是確切的目錄。

下面是我的代碼:

ProcessBuilder p = new ProcessBuilder("cmd", "/c", "explorer ", "C:\Local Disk D\My Tutorial"); 
p.start(); 

我看了一下Java execute a command with a space in the pathname但沒有得到一個線索。

+0

沒有放引號不起作用。 – ParagJ 2013-05-07 10:19:49

回答

4

我剛在本地機器上測試過它。

該行爲是由於"explorer "後的空間造成的。刪除該空間,它會工作。你也需要引用\

ProcessBuilder p = new ProcessBuilder("cmd", "/c", "explorer", 
             "C:\\Local Disk D\\My Tutorial"); 
+0

完美!是的,我忘了逃脫\。儘管我在代碼中已經逃脫了它。但是這是探險家之後的空間問題。謝謝。 – ParagJ 2013-05-07 10:22:11

+0

不客氣!當然你確實逃過了'\\',否則代碼將不會執行並向您顯示主目錄,爲了完整起見,我添加了它;-) – A4L 2013-05-07 10:25:41