Java-Sockets: InputStream.read() vs BufferedReader.read()
Bin ich beim Lesen von einem Socket den InputStream. Weil ich bin Parsen der eingehenden Daten on the fly, ich bin verpflichtet, zu Lesen von Zeichen.
Tut BufferedReader.read()
das gleiche wie InputStream.read()
tut ? (vorausgesetzt, dass der BufferedReader ist konstruiert worden, mit dem InputStream als Basis)
Ist es effizienter zu nutzen InputStream.read() beim Lesen jedes Zeichen einzeln? Oder gibt es eine bessere Möglichkeit?
Du musst angemeldet sein, um einen Kommentar abzugeben.
BufferedReader liest mehrere Zeichen aus einer zugrunde liegenden Reader. Ein InputStream ist die Bereitstellung von bytes. Also Sie arbeiten auf 2 verschiedenen Datentypen. Wie sind Sie mit der Verpackung eines Leser um einen Stream??? Vermutlich hast du so etwas:
in dem Fall würde ich vorsichtig sein, geben Sie die Zeichencodierung.
Aus der Sicht der Optimierung, es wäre besser, verwenden Sie den BufferedReader, da werde es Lesen mehrere Kilobyte auf einmal, und man kann mit jedem Charakter, wenn Sie wollen (nicht unbedingt erzwingen einer neuen IO Lesen).
read () - Methode der Klasse InputStream ist eine abstrakte Methode. Es sollte InputStreamrReader denke ich. Comming zurück zu deiner Frage, sowohl read () - Methode von InputStreamReader und BufferesReader Klasse die gleiche Sache zu tun - die Rückkehr der ascii-Wert eines Zeichens, der einzige Unterschied ist, dass BufferedReader verwendet, was genannt wird, die Pufferung, die es uns erlaubt zu reduzieren, wie oft wir Lesen von der Festplatte/STDIN durch kopieren von Blöcken in den Hauptspeicher, wo, wie mit InputStreamReader jeder Aufruf von read() könnte zu lesenden bytes from disk/STDIN, umgewandelt in Zeichen, und dann wieder, das kann sehr ineffizient sein.