2016-04-06 7 views
1

ソケット出力ストリームへの書き込みのためにバッファーライターをインスタンス化する必要があります。バッファ付きライターのインスタンス化の相違

String cs = "UTF-8"; 
    OutputStream out = socket.getOutputStream(); 

    Writer writer1 = new BufferedWriter(
      new OutputStreamWriter(out, cs)); 

    Writer writer2 = new OutputStreamWriter(
      new BufferedOutputStream(out), cs); 

    Writer writer3 = new BufferedWriter(
      new OutputStreamWriter(
        new BufferedOutputStream(out), cs)); 

第1バージョンと第2バージョンの間に明白な違いはありますか?どのソケットに書き込むのが好ましいですか? 3番目のバージョンは少し "過剰な"ものですか?

答えて

5

第3のものは過剰です。

最初に1文字が優先されます。これは、データをテキスト - バイトエンコーダで送信する前にバッファリングするためです。

OutputStreamWriterのJavadocは、そうであっても言う:トップ効率のために

、頻繁コンバータの呼び出しを回避するために、BufferedWriterの内にOutputStreamWriterをラップすることを検討してください。例:

Writer out 
    = new BufferedWriter(new OutputStreamWriter(System.out)); 
関連する問題