使用Java 的Runtime 執行具有重定向輸出的Shell 腳本
當嘗試使用Java 的Runtime.exec() 方法執行shell 腳本時,輸出重定向可能無法如預期運作。當重定向運算子 >> 時,就會出現此問題。在腳本中使用。
問題:
Process p = Runtime.getRuntime().exec("sh somescript.sh >> out.txt");
儘管腳本成功執行,但輸出不會重定向到指定檔案以及檔案本身將保持未建立狀態。
解:
要有效地重新導向輸出,需要利用Java 的ProcessBuilder 類別:
ProcessBuilder builder = new ProcessBuilder("sh", "somescript.sh"); builder.redirectOutput(new File("out.txt")); builder.redirectError(new File("out.txt")); Process p = builder.start(); // may throw IOException
說明:說明:
透過使用ProcessBuilder,您可以獨立設定stdout 和stderr 流的重新導向。該redirectOutput()和redirectError()方法可讓您指定一個檔案進行輸出重新導向。 請注意,如果檔案「out.txt」不存在,它將自動建立。如果已經存在,現有內容將被覆蓋。以上是使用 Java 運行時執行 Shell 腳本時如何有效重定向輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!