コンソール出力をJavaの文字列にリダイレクトするにはどうすればよいですか?

Patricia Arquette
リリース: 2024-10-30 01:27:02
オリジナル
947 人が閲覧しました

How to Redirect Console Output to a String in Java?

コンソール出力を Java の文字列にリダイレクトする

問題:

値を返さないメソッドを考えてみましょうただし、その出力はコンソールに直接出力されます。この出力を文字列として取得してさらに処理したいと考えています。ただし、メソッドの戻り値の型を変更することはできません。

解決策:

Java では、次の手順でコンソール出力を文字列にリダイレクトできます。

  1. System.out 出力のキャプチャ:

    デフォルトでは、コンソール出力は System.out に書き込まれます。この出力をキャプチャするには、System.setOut メソッドを使用して出力先を切り替えます。

  2. ByteArrayOutputStream を使用します:

    ByteArrayOutputStream オブジェクトを作成します。出力をバイト配列として保存します。

  3. PrintStream の作成:

    コンストラクターを使用して PrintStream を ByteArrayOutputStream に接続します。このストリームは、System.out 出力をバイト配列にリダイレクトします。

  4. 出力のリダイレクト:

    新しく作成された PrintStream を使用して System.setOut を呼び出します。議論。これにより、System.out の出力先が ByteArrayOutputStream に実質的に変更されます。

  5. 出力を文字列として取得:

    必要な出力をコンソールに出力した後これを文字列として取得するには、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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!