首頁 >Java >java教程 >如何在 Java 中擷取使用額外參數執行的外部程式的輸出?

如何在 Java 中擷取使用額外參數執行的外部程式的輸出?

Barbara Streisand
Barbara Streisand原創
2024-10-26 14:53:30834瀏覽

How to Capture Output from External Programs Executed with Extra Parameters in Java?

在Java 中執行帶有額外參數的外部程式

當嘗試從Java 應用程式執行外部程式並向其傳遞參數時,您可能會遇到以下情況:程式運行沒有任何錯誤,但無法執行其預期操作。

潛在原因

在您提供的範例程式碼中,您正在使用 Runtime.getRuntime().exec() 方法來執行外部程式。此方法採用字串陣列作為參數,其中第一個元素是要執行的命令,後續元素是傳遞給命令的參數。

工作解決方案

中的問題您的程式碼是您沒有正確捕捉外部程式的輸出。要取得輸出並檢查程式的行為,您可以使用以下修改的程式碼:

<code class="java">Process process = new ProcessBuilder(
    "C:\Users\user\Desktop\program.exe",
    "C:\Users\user\Desktop\images.jpg",
    "C:\Users\user\Desktop\images2.txt"
)
.start();

InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);

String line;
System.out.printf("Output of running %s is:", Arrays.toString(params));

while ((line = br.readLine()) != null) {
    System.out.println(line);
}</code>

說明

在此程式碼中,我們使用ProcessBuilder 類別建立一個新進程,該進程將執行外部程序。然後使用 start() 方法來啟動進程。

為了捕獲進程的輸出,我們從進程創建一個 InputStream,一個用於包裝 InputStream 的 InputStreamReader,以及一個用於從進程讀取行的 BufferedReader。 InputStreamReader.

然後,我們使用 BufferedReader 中的 readLine() 方法來讀取進程的每一行輸出。最後,使用 System.out.println() 語句列印輸出行。

透過使用此方法,您可以從 Java 執行外部程式並捕獲它們的輸出,包括它們可能產生的任何錯誤或訊息。然後,您可以使用此輸出來進一步處理或顯示結果。

以上是如何在 Java 中擷取使用額外參數執行的外部程式的輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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