2013-08-24 80 views
0

使用此代碼執行時產生一些輸出被執行正常的所有命令,但一些命令不產生輸出並不例如執行 :RM * .JPG沒有工作,但MKDIR是,我無法看出區別沒有輸出的java內執行的命令行bash命令是不是像

我很是新手,一派相當長的一段時間,但這個特殊的問題從未被提及 請幫幫我out 謝謝

+0

通過運行'rm * .jpg'你期待什麼樣的輸出?您是否檢查過該命令是否正在運行? –

+0

rm * .jpg當從命令行使用時,不會向用戶反饋,它只會刪除當前目錄中的所有jpg文件。將從java程序生成的命令複製粘貼到命令行時,它確實正常工作rm * .jpg的退出輸出爲1,並且mkdir somedir的退出代碼爲0 – allard

回答

0

。在Java中,同一個shell沒有運行,所以*不被解釋爲通配符。

正如指出here,嘗試提取目標/工作目錄你的cmd輸入的和做類似:

File[] files = new File(<directory>).listFiles(); 
for(File file : files){ 
    if(file.getAbsolutePath().endsWith(".jpg")){ 
     //perform delete 
    } 
} 

或者,你可以嘗試(不測試,因爲我沒有一個Linux ):

String[] command = new String[] {"rm", "*.jpg"} 
p = Runtime.getRuntime().exec(command); 
+0

executeCommand(「rm」+ FieldGraphicsDir.getText()+「/」+「* .jpg」);是輸入executeCommand方法的命令 – allard

0

如果有錯誤,否則它將去ErrorStream,你需要附上一個也:當您運行rm *在Linux上,shell解釋,並採取*照顧

BufferedReader bre = new BufferedReader 
     (new InputStreamReader(p.getErrorStream())); 
+0

並且沒有錯誤? – allard

+0

@allard檢查這個相關的帖子:http://stackoverflow.com/questions/3343066/reading-streams-from-java-runtime-exec?answertab=active#tab-top –

+0

正如我所說,我是一個新手,但我在隧道盡頭看到了一些亮點,這是關於*的,對嗎? – allard