2013-07-14 82 views
-1

以下命令可以正常使用,當我從終端執行:getRuntime.exec()不工作的,Ubuntu 13.04

rm -f /home/folkman/Desktop/DimacsProba/* 

不過,我想使用Java來執行它。我使用NetBeans,當我使用的Ubuntu的舊版本,它的工作:

 Runtime.getRuntime().exec("rm -f /home/folkman/Desktop/DimacsProba/*"); 

現在,與Ubuntu 13.04。以下任何內容都不起作用:

//1 
    Runtime.getRuntime().exec("rm -f /home/folkman/Desktop/DimacsProba/*"); 

//2 
    Runtime.getRuntime().exec(new String[]{"rm" , "-f", "/home/folkman/Desktop/DimacsProba/*"}); 

// 3 
ProcessBuilder pb= new ProcessBuilder("rm","/home/folkman/Desktop/DimacsProba/*"); 
Process p=pb.start(); 

也許這不是因爲Ubuntu,而是我真的不知道。請幫忙! 謝謝!

+2

任何錯誤消息? – atamanroman

+2

爲什麼不通過Java API刪除文件? –

+0

調用shell刪除文件沒有任何問題,但這種方式犧牲了可移植性。爲了更好的可移植性,並且如果它適合您的用例,您可能希望使用Java文件API以遞歸方式刪除目錄中的文件。 – 2013-07-15 00:42:20

回答

6

通配符是一個shell特性,所以如果你使用exec,它們將被逐字地採用。如果你有一個名爲*將被刪除的文件,但我懷疑你想要在這裏一個shell擴展*

嘗試

"sh", "-c", "rm -f /home/folkman/Desktop/DimacsProba/*" 
+1

它的工作原理,謝謝! – user2581772

+0

@ user2581772您可以通過點擊左側的勾號來接受答案;) –