2016-04-06 6 views
1

Ich möchte einen gepufferten Writer für das Schreiben in einen Socket-Ausgangsstrom instanziieren.Unterschiede bei der Instanziierung von gepufferten Writern

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)); 

Gibt es einen nicht offensichtlichen Unterschied zwischen der ersten und zweiten Version? Welche wird für das Schreiben in eine Steckdose bevorzugt? Ist die dritte Version ein bisschen "Overkill"?

Antwort

5

Dritte ist Overkill.

Der erste wird bevorzugt, da er die Daten vor dem Senden durch den Text-zu-Byte-Encoder puffert, was eine bessere Leistung in Blöcken gegenüber einem Zeichen pro Zeit bewirkt.

Die javadoc von OutputStreamWriter sagt sogar so:

Für höchste Effizienz, sollten Sie eine Output innerhalb eines BufferedWriter Einwickeln, um häufige Wandler Anrufungen zu vermeiden. Zum Beispiel:

Writer out 
    = new BufferedWriter(new OutputStreamWriter(System.out)); 
Verwandte Themen