Java:PrintStreamから読み取るにはどうすればよいですか?
質問
次のコードブロックでPrintStramから読み取り(受信データをローカル文字列に追加)しようとしています:
System.out.println("Starting Login Test Cases...");
out = new PrintStream(new ByteArrayOutputStream());
command_feeder = new PipedWriter();
PipedReader in = new PipedReader(command_feeder);
main_controller = new Controller(in, out);
for(int i = 0; i < cases.length; i++)
{
command_feeder.write(cases[i]);
}
main_controllerはいくつかの文字列をout(PrintStream)に書き込みますが、Controllerクラスのコードを変更できないと仮定して、このPrintStreamからどのように読み取ることができますか?事前に感謝します。
解決
簡単に言えば、できません。 PrintStreamは、出力用です。データを読み取るには、InputStream(または任意のサブクラス)が必要です。
すでにByteArrayOutputStreamがあります。最も簡単なのは:
// ...
ByteArrayOutputStream baos = new ByteArrayOutputStream();
out = new PrintStream(baos);
// ...
ByteArrayInputStream in = new ByteArrayInputStream(baos.toByteArray());
// use in to read the data
他のヒント
基礎となるバイト配列出力ストリームへの参照を保持する場合、 toString(String encoding)または toByteArray()。
前者が必要だと思うので、文字列の記述方法に一致するエンコードを指定する必要があります(デフォルトのエンコードバリアントを使用して回避できる場合があります)
コントローラーを変更できないため、コントローラーのプロセスを開始し、プロセスの出力から読み取ります。
例。
所属していません StackOverflow