"Bună ziua, Amigo! Folosești de multă vreme clasele BufferedReader și InputStreamReader . Acum haideți să explorăm ce fac ele de fapt."

Clasa InputStreamReader este un adaptor clasic de la interfața InputStream la interfața Reader . Nici aici nu este nimic de adăugat.

Dar pe scurt, asta se întâmplă. Când solicitați (citiți) următorul caracter dintr-un obiect InputStreamReader , acesta citește câțiva octeți din InputStream transmis constructorului și îi returnează ca un singur caracter.

Dar Reader nu este cel mai convenabil obiect cu care să lucrați. Adesea, ceea ce avem nevoie este să nu citim toate caracterele introduse de utilizator dintr-o dată, ci mai degrabă să împărțim aceste caractere în rânduri.

„Dar clasa Reader are o metodă de citire (CharBuffer s). Nu putem folosi asta?”

„Această metodă citește datele în bucăți de dimensiunea tamponului și le plasează în obiectul CharBuffer.”

Textul este de obicei împărțit în rânduri. Deci metoda read(CharBuffer s) poate citi mai multe linii simultan. Dacă trebuie să citim text exact până la sfârșitul unui rând (adică toate caracterele dintr-o linie până la un caracter newline), ar fi mai bine să căutăm altceva. Și o metodă alternativă există. În clasa BufferedReader .

Clasa BufferedReader , care este o structură convenabilă peste Reader, are o metodă foarte convenabilă: readLine() . Această metodă ne permite să citim simultan rânduri întregi de text dintr-un Reader. Când apelați readLine în codul dvs., acesta citește caractere din obiectul Reader până când întâlnește un caracter newline. Odată ce este întâlnit caracterul newline, metoda lipește aceste caractere împreună într-un singur șir și îl returnează.

"Am folosit asta în mod regulat, dar nu știam cum funcționează. Acum știu. Mulțumesc, Kim."