ホームページ  >  記事  >  Java  >  Java で外部プログラムを実行し、その出力をキャプチャするにはどうすればよいですか?

Java で外部プログラムを実行し、その出力をキャプチャするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-30 09:29:02279ブラウズ

How to Execute External Programs in Java and Capture Their Output?

Java で外部プログラムを実行する方法

複雑なタスクを処理したり、外部システムと接続したりする場合、Java 開発者は外部プログラムを実行する必要があることがよくあります。彼らのコードから。このタスクは概念としては単純ですが、プロセス管理、パラメータの受け渡し、エラー処理など、さまざまな課題を引き起こす可能性があります。

Java で外部プログラムを実行するための一般的なアプローチの 1 つは、Runtime.getRuntime().exec を利用することです。 () 方法。このメソッドは文字列の配列を引数として受け取ります。最初の要素は実行可能パスを表し、後続の要素はコマンドライン パラメータとして機能します。

質問で提供されているコードはこのメソッドを使用していますが、次のことはできません。出力をキャプチャするか、外部プログラムと対話します。これを修正するには、代わりにプロセスベースのアプローチを採用します。

<code class="java">Process process = new ProcessBuilder("C:\PathToExe\MyExe.exe", "param1", "param2").start();</code>

このコードは、実行可能ファイルとそのパラメーターを指定して、ProcessBuilder オブジェクトを作成します。その後、start() メソッドを呼び出して外部プログラムを開始し、子プロセスを表す Process オブジェクトを返します。

子プロセスと対話し、その出力にアクセスするには、入力ストリームと出力ストリームを利用できます。

<code class="java">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(args));

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

このコードは、子プロセスからの入力ストリームを開き、リーダーを作成し、出力を 1 行ずつ反復処理して、コンソールに表示します。

プロセスを使用するベースのアプローチにより、外部プログラムを効果的に実行し、その入出力を管理し、包括的な方法でエラーを処理できます。提供されたコードは、Java コードから外部システムとのインターフェースを模索する開発者にとっての出発点として機能します。

以上がJava で外部プログラムを実行し、その出力をキャプチャするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。