1. ホーム
  2. java

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

2023-07-30 07:46:20

質問

あるメソッドがあり、その が返されるメソッドがあります。 void で、コンソールに直接表示されます。

しかし、私はそれを扱うことができるように、その出力を文字列で必要とします。

戻り値の型を持つメソッドに変更を加えることができないので void その出力をStringにリダイレクトする必要があります。

どのように私はJavaでそれをリダイレクトすることができますか?

どのように解決するのですか?

もし、この関数が System.out に出力しているならば、その出力を System.setOut メソッドを使って System.out に行くように PrintStream に移動します。もし、あなたが PrintStream に接続された ByteArrayOutputStream であれば、その出力を String .

例です。

// 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());

このプログラムは1行だけ表示します。

Here: Foofoofoo!