"Hej, Amigo! Du har använt klasserna BufferedReader och InputStreamReader under lång tid. Låt oss nu utforska vad de faktiskt gör."

Klassen InputStreamReader är en klassisk adapter från InputStream- gränssnittet till Reader- gränssnittet. Det finns inget att tillägga här heller.

Men kort sagt, det här är vad som händer. När du begär (läser) nästa tecken från ett InputStreamReader- objekt läser det några byte från InputStream som skickas till konstruktorn och returnerar dem som ett tecken.

Men Reader är inte det mest bekväma objektet att arbeta med. Ofta behöver vi inte läsa alla tecken som användaren matat in på en gång, utan snarare att dela upp dessa tecken i rader.

"Men Reader-klassen har en läsmetod (CharBuffer s). Kan vi inte använda den?"

"Denna metod läser data i bitar av storleken på bufferten och placerar dem i CharBuffer-objektet."

Text är vanligtvis uppdelad i rader. Så metoden read(CharBuffer s) kan läsa flera rader samtidigt. Om vi ​​behöver läsa text exakt fram till slutet av en rad (dvs. alla tecken i en rad tills ett nyradstecken) är det bättre att leta efter något annat. Och det finns en alternativ metod. I klassen BufferedReader .

Klassen BufferedReader , som är en bekväm struktur ovanpå Reader, har en mycket bekväm metod: readLine() . Denna metod låter oss läsa hela textrader från en läsare på en gång. När du anropar readLine i din kod läser den tecken från Reader-objektet tills den stöter på ett nyradstecken. När nyradstecknet väl påträffas limmar metoden ihop dessa tecken i en enda sträng och returnerar den.

"Jag har använt det här regelbundet, men jag visste inte hur det fungerar. Nu vet jag det. Tack, Kim."