Schabby's Blog
Reserve Orbital Defence Commander

Moin, moin! Heute nun eine kurze Einweisung in die richtige Verwendung von BufferedReaders und den Grund warum der BufferedReader so populär ist. Im Grunde gibt es zwei Gründe:

  1. BufferedReader verbessert die Lesegeschwindigkeit aus anderen Readern (z.B. FileReader um von der Festplatte zu lesen) drastisch,
  2. BufferedReader hat praktischer Weise eine readLine() Methode, mit deren Hilfe man ganze Zeilen lesen kann.

In Prinzip ist der BufferedReader auch nur ein Reader. Das heisst er hat die typischen read(...) Methoden. Intern aber, arbeitet der BufferedReader auf einem Speicherbereich (dem Buffer), den er erst füllt, bevor seine read(...) Methoden darauf arbeiten können. Das heisst, dass der BufferedReader größere Datenblöcke auf einmal lesen kann und die dann nach und nach an den äußeren Reader weiterleiten kann. Das ist insbesondere sinnvoll bei Readern die von wiederum von Low-Level Readern lesen, die jeweils bei größeren Datenblöcken performant sind, wie typischer Weise von der Festplatte oder vom Socket.

Ein typischer Gebrauch eines BufferedReaders sieht so aus:

InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream (textFile), encoding );
BufferedReader bufferedReader = new BufferedReader (inputStreamReader);

4 Antworten

  1. Kiki says:

    Danke für die Info!

  2. chris says:

    Hey,

    ich komme von Actionscript und bin gerade dabei mich in Android / Java einzuarbeiten.

    Was ich nicht ganz verstehe: Warum braucht der Reader eigentlich keinen EventListener? Wenn man das einfach so in den Code schreibt, könnte es doch sein, dass die Daten noch gar nicht da sind, wenn man anfängt zu lesen ...

    Danke!

  3. schabby says:

    Hi Chris,

    ich bin kein Pro in ActionScript, aber ich versuche eine Antwort:

    Der BufferedReader hat eine read() bzw. readLine() Methode mit der Buffer gefüllt würd. Der BufferedReader kann dabei mehr lesen als Du eigenlich liest, denn Du liest zwar möglicher Weise immer nur ein Character, aber es ist sehr viel effizienter die einzelnen Character aus dem Speicher zu lesen, als ständig von der Festplatte (oder wo auch immer der Stream herkommt).

    Hilft das? :)

    Grüße, Johannes

  4. Joschua W says:

    erklärs noch einmal für idioten, bitte.

Post Comment

Please notice: Comments are moderated by an Admin.