Java:PrintStreamから読み取るにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1207281

  •  05-07-2019
  •  | 
  •  

質問

次のコードブロックで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()

前者が必要だと思うので、文字列の記述方法に一致するエンコードを指定する必要があります(デフォルトのエンコードバリアントを使用して回避できる場合があります)

コントローラーを変更できないため、コントローラーのプロセスを開始し、プロセスの出力から読み取ります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top