Ich möchte in eine Steckdose schreiben. Aus der Lektüre über die Netzwerk-IO, so scheint es mir, dass der optimale Weg zu schreiben, um es so etwas wie dies zu tun ist:Ist es Overkill, BufferedWriter und BufferedOutputStream zusammen zu verwenden?
OutputStream outs=null;
BufferedWriter out=null;
out =
new BufferedWriter(
new OutputStreamWriter(new BufferedOutputStream(outs),"UTF-8"));
Die BufferedWriter
den Eingang die OutputStreamWriter
Puffer würde, die empfohlen wird, weil es den Schreiber verhindert Starten des Encoders für jedes Zeichen.
Die BufferedOutputStream
würde dann die Bytes von Writer
puffern, um zu vermeiden, dass ein Byte nach dem anderen potenziell in das Netzwerk eingefügt wird.
Es sieht ein bisschen wie Overkill aus, aber es scheint alles wie es hilft? Für jede Hilfe dankbar ..
EDIT: Von der javadoc auf OutputStreamWriter
:
Jeder Aufruf einer Methode write() bewirkt, dass die Codierung Wandler auf der gegebenen Stelle (n) aufgerufen werden. Die resultierenden Bytes werden in einem Puffer gesammelt, bevor sie in den zugrundeliegenden Ausgabestrom geschrieben werden. Die Größe dieses Puffers kann angegeben werden, ist aber standardmäßig groß genug für die meisten Zwecke. Beachten Sie, dass die an die write() -Methode übergebenen Zeichen nicht gepuffert sind.
Um höchste Effizienz zu erzielen, sollten Sie einen OutputStreamWriter in einen BufferedWriter einfügen, um häufige Konverteraufrufe zu vermeiden. Zum Beispiel:
Writer out = new BufferedWriter(new OutputStreamWriter(System.out));
Vielen Dank für Ihre Antwort. Aus dem Javadoc in OutputStreamWriter: "Jeder Aufruf einer write() -Methode bewirkt, dass der Codierungskonverter für die angegebenen Zeichen aufgerufen wird. Die resultierenden Bytes werden in einem Puffer gespeichert, bevor sie in den zugrunde liegenden Ausgabestream geschrieben werden Dieser Puffer kann angegeben werden, ist aber standardmäßig für die meisten Zwecke groß genug. Beachten Sie, dass die an die write() -Methode übergebenen Zeichen nicht gepuffert sind. Um höchste Effizienz zu erzielen, sollten Sie einen OutputStreamWriter in einen BufferedWriter einfügen, um häufige Konverteraufrufe zu vermeiden . " Ganzes Zitat in OP bearbeiten – Bruce
@Bruce: * Überlegen Sie *, sicher. Das ist nicht das Gleiche wie * empfehle *. Ich würde es testen. Ich wäre sehr überrascht zu sehen, dass es in den meisten Fällen einen signifikanten Unterschied macht. –
Danke für Ihre nützlichen Antworten. Ja, ich sollte es testen. Es ist tatsächlich als Teil eines Programmiertests, den ich für ein Interview gemacht habe, und ich wollte wissen, was für eine standardmäßige korrekte Lösung wäre, oder zumindest eine, die nicht offensichtlich falsch ist. – Bruce