2

PrintWriterまたはPrintStreamを使用して、フォーマットされた文字列を出力ストリームに書き込みたいのですが(作成を制御することはできません)。ただし、基になるOutputStreamをフラッシュすると、パフォーマンスが大幅に低下します。

PrintWriter / PrintStreamをフラッシュする必要がありますか?

PrintStream/PrintWriterをフラッシュする必要がある場合。基になるOutputStreamをフラッシュせずにこれを行うことはできますか、または基になるストリームをラップするために「フラッシュプロテクター」OutputStreamを作成する必要がありますか?

これをもう少し明確にするために、実装したい

 public void writeSomeString(OutputStream foo);

ただし、このメソッドは、同じOutputStream(foo)に対して何度も呼び出される可能性があります。各呼び出しは、独自のPrintWriterを構築する必要があります。そうするのは醜いことは知っていますが、インターフェースやの作成を制御することはできませんfoo

私は、各メソッドがfoo独自のPrintWriter/PrintStreamをフラッシュするためだけにフラッシュする必要がないようにしようとしています。

だから私はしたい:

public void writeSomeString(OutputStream foo) {
    PrintStream s = new PrintStream(foo);
    s.println("bar");
    // other code
}

このメソッドのフラッシングを完全に避けたいfoo

4

1 に答える 1

2

PrintWriterは、次の条件でフラッシュする必要があります。

ServerSocket s = new ServerSocket(4444);

Socket incoming = s.accept();

OutputStream output = s.getOutputStream();

PrintWriter pw = new PrintWriter(output,true);

System.out.println(pw.write(new Scanner(System.in).nextLine()));

PrintWriterコンストラクターの2番目のパラメーターは、ブールデータ型を受け入れるflushです。データをフラッシュする必要があるため、バッファーがいっぱいでなくても、コンソールにスローされます。

于 2012-05-17T18:13:25.627 に答える