問題:
値を返さないメソッドを考えてみましょうただし、その出力はコンソールに直接出力されます。この出力を文字列として取得してさらに処理したいと考えています。ただし、メソッドの戻り値の型を変更することはできません。
解決策:
Java では、次の手順でコンソール出力を文字列にリダイレクトできます。
System.out 出力のキャプチャ:
デフォルトでは、コンソール出力は System.out に書き込まれます。この出力をキャプチャするには、System.setOut メソッドを使用して出力先を切り替えます。
ByteArrayOutputStream を使用します:
ByteArrayOutputStream オブジェクトを作成します。出力をバイト配列として保存します。
PrintStream の作成:
コンストラクターを使用して PrintStream を ByteArrayOutputStream に接続します。このストリームは、System.out 出力をバイト配列にリダイレクトします。
出力のリダイレクト:
新しく作成された PrintStream を使用して System.setOut を呼び出します。議論。これにより、System.out の出力先が ByteArrayOutputStream に実質的に変更されます。
出力を文字列として取得:
必要な出力をコンソールに出力した後これを文字列として取得するには、PrintStream をフラッシュし、System.out を元の宛先にリセットし、最後に ByteArrayOutputStream.toString() を使用してバイト配列を文字列に変換します。
例:
<code class="java">// Create a stream to hold the output ByteArrayOutputStream baos = new ByteArrayOutputStream(); PrintStream ps = new PrintStream(baos); // IMPORTANT: Save the old System.out! PrintStream old = System.out; // Tell Java to use your special stream System.setOut(ps); // Print some output: goes to your special stream System.out.println("Foofoofoo!"); // Put things back System.out.flush(); System.setOut(old); // Show what happened System.out.println("Here: " + baos.toString());</code>
このプログラムは次のように出力します:
Here: Foofoofoo!
以上がコンソール出力をJavaの文字列にリダイレクトするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。