使用此代碼執行時產生一些輸出被執行正常的所有命令,但一些命令不產生輸出並不例如執行 :RM * .JPG沒有工作,但MKDIR是,我無法看出區別沒有輸出的java內執行的命令行bash命令是不是像
我很是新手,一派相當長的一段時間,但這個特殊的問題從未被提及 請幫幫我out 謝謝
使用此代碼執行時產生一些輸出被執行正常的所有命令,但一些命令不產生輸出並不例如執行 :RM * .JPG沒有工作,但MKDIR是,我無法看出區別沒有輸出的java內執行的命令行bash命令是不是像
我很是新手,一派相當長的一段時間,但這個特殊的問題從未被提及 請幫幫我out 謝謝
。在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);
executeCommand(「rm」+ FieldGraphicsDir.getText()+「/」+「* .jpg」);是輸入executeCommand方法的命令 – allard
如果有錯誤,否則它將去ErrorStream,你需要附上一個也:當您運行rm *
在Linux上,shell解釋,並採取*
照顧
BufferedReader bre = new BufferedReader
(new InputStreamReader(p.getErrorStream()));
通過運行'rm * .jpg'你期待什麼樣的輸出?您是否檢查過該命令是否正在運行? –
rm * .jpg當從命令行使用時,不會向用戶反饋,它只會刪除當前目錄中的所有jpg文件。將從java程序生成的命令複製粘貼到命令行時,它確實正常工作rm * .jpg的退出輸出爲1,並且mkdir somedir的退出代碼爲0 – allard