我試圖從我的Java應用程序中解壓rar文件。無法通過進程運行rar.exe
我發現了很多關於如何執行命令的解決方案,這些命令適用於Windows上的dir
等。但它似乎不適用於任何其他應用程序,如gcc
或rar
。我知道他們都工作,因爲當我執行他們cmd
他們給我適當的輸出。
但是,我想打印他們在cmd
中吐出的輸出。我只是不明白爲什麼它適用於dir
,沒有別的(沒有「本地」命令)。
的exitVal
似乎總是0 ..
try {
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("cmd /c rar.exe"); //Does not work
//Process pr = rt.exec("cmd /c dir") // This works
//Process pr = rt.exec("gcc.exe");
BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line=null;
while((line=input.readLine()) != null) {
System.out.println(line);
}
int exitVal = pr.waitFor();
System.out.println("Exited with error code "+exitVal);
}catch(IOException e)
{
System.out.println("An error occured. Are you sure the executable is in your Windows PATH?");
}
catch(Exception e) {
System.out.println(e.me);
e.printStackTrace();
}
catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
捕獲errorstream的RAR的路徑),它會告訴你,如果有什麼不對的執行命令。 – Sanjeev
我喜歡A保羅的答案。現在你還必須考慮性能。如果你的代碼將在WebServer上運行,或者至少有很多調用,那麼使用一些java庫會更好,使用'Runtime.exec()'調用外部程序可以殺死一個ApplicationServer(如果它是常用特性的一部分)。 .. – Martin