ここで少し混乱しています。
私はこのようなことをしたいと思います:
- 書き込み可能なある種のバッファを作成します
- バッファをクリアする
- printf() のような関数を数回使用して、一度だけ実行したい複雑な計算に基づいて、一連のものをバッファーに追加します
- バッファの内容を使用して、いくつかの
PrintStreamオブジェクトに出力します - 必要に応じて手順 2 ~ 4 を繰り返します
例えば:
SuperBuffer sb = new SuperBuffer();
/* SuperBuffer is not a real class, so I don't know what to use here */
PrintStream[] streams = new PrintStream[N];
/* ... initialize this array to several streams ... */
while (!done)
{
sb.clear();
sb.printf("something %d something %d something %d",
value1, value2, value3);
if (some_complicated_condition())
sb.printf("something else %d something else %d", value4, value5);
/* ... more printfs to sb ... */
for (PrintStream ps : streams)
ps.println(sb.getBuffer());
}
PrintWriterをStringWriterの周りにラップすると、メソッドがないことをsb除いて、上記のオブジェクトに必要なことが行われるようですclear()。ループのたびに新しい PrintWriter オブジェクトと StringWriter オブジェクトを作成できると思いますが、それは面倒なようです。(私の実際のコードでは、1回のループで1回だけでなく、いくつかの場所でこれを行います...)
私もjava.nio.CharBuffer他の NIO バッファを多く使用しており、それは有望なアプローチのように思えますが、機能を提供するオブジェクトでそれらをラップする方法がわかりませんprintf()。
何かアドバイス?