Frage

Was ist der Unterschied zwischen der Verwendung eines BufferedReader um den String im folgenden Code vs den String nur mit? Durch Laden des DOM in Zeile 2 der beiden Beispielen auf, wie es scheint, die BufferedReader nicht notwendig ist?

    InputSource is = new InputSource(new StringReader(html));
    Document dom = XMLResource.load(is).getDocument();

VS

    InputSource is = new InputSource(new BufferedReader(new StringReader(html)));
    Document dom = XMLResource.load(is).getDocument();
War es hilfreich?

Lösung

In diesem speziellen Fall sehe ich keinen Nutzen. Im Allgemeinen gibt es zwei Vorteile:

  • Die ach so handlich readLine() Methode wird nur in BufferedReader definiert anstatt Reader (hier ohne Bedeutung)
  • BufferedReader reduziert IO, wo einzelne Anrufe an den zugrunde liegenden Leser möglicherweise teuer sind (das heißt weniger klobig Anrufe sind schneller als viele Kleinen) - auch hier irrelevant für StringReader

Ausschneiden und Einfügen nicht?

Andere Tipps

EDIT: Meine ursprüngliche Antwort unten. Die unter nicht relevant in diesem Fall, da die gepufferte Leser einen String wickelt, die einen String wickelt. Es gibt also keine Pufferung durchgeführt werden, und die BufferedReader scheint überflüssig zu sein. Sie könnte ein Argument machen für die besten / konsistente Praktiken verwenden, aber es wäre ziemlich dünn sein.

Möglicherweise ist das Ergebnis einer Kopieren / Einfügen, oder vielleicht ein IDE-driven refactor zu weit!

BufferedReader wird versuchen, in einer optimalen Weise zu lesen.

Das heißt, es wird größere Brocken von Daten in einem Rutsch (in einer konfigurierbaren) liest und dann zur Verfügung stellen, wie erforderlich. Dadurch wird die Anzahl reduziert von liest von der Festplatte (etc.) auf Kosten einige Speichernutzung.

Um von der Javadoc zu zitieren:

  

In der Regel wird jede Leseanforderung aus   ein Reader bewirkt eine entsprechende Lese   Anfrage werden aus der zugrunde liegenden   Zeichen oder Bytestrom. Es ist   daher ratsam, eine einzuwickeln   BufferedReader um jeden Leser, deren   read () Operationen sein kann teuer, wie   wie FileReaders und InputStreamReaders

Die BufferedReader Version wurde von einigem Code kopiert, die von einem Filereader lesen verwendet?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top