首頁  >  文章  >  Java  >  如何使用 exec() 方法修復 Java 輸出重定向失敗?

如何使用 exec() 方法修復 Java 輸出重定向失敗?

Linda Hamilton
Linda Hamilton原創
2024-10-24 08:10:30130瀏覽

How to Fix Java Output Redirection Failure Using exec() Method?

Java exec() 方法輸出重新導向失敗

在此問題中,使用者嘗試使用Java 執行時間重新導向shell 腳本的輸出.getRuntime().exec() 方法。但是,重定向失敗,並且未建立指定的輸出檔案。

提供的程式碼片段是:

Process p = Runtime.getRuntime().exec("sh somescript.sh &> out.txt");

通常,此指令應將腳本的輸出重新導向至檔案輸出.txt。但是,在這種情況下,即使直接在 shell 中執行腳本成功運行,輸出也不會重定向。

解決方案:使用 ProcessBuilder 進行重定向

解決方案在於使用 ProcessBuilder 而不是 Runtime.getRuntime().exec()。 ProcessBuilder 提供了對進程創建的更多控制,並允許明確重定向輸入、輸出和錯誤流。

使用 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 已建立並配置為將標準輸出和錯誤流重定向到檔案 out.txt。然後使用 start() 方法建立進程,如果出現問題,可能會拋出 IOException。

透過利用 ProcessBuilder,可以明確管理輸出重定向,從而解決問題。

以上是如何使用 exec() 方法修復 Java 輸出重定向失敗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn