"Ciao, Amigo! Hai usato le classi BufferedReader e InputStreamReader per molto tempo. Ora esploriamo cosa fanno effettivamente."

La classe InputStreamReader è un adattatore classico dall'interfaccia InputStream all'interfaccia Reader . Anche qui non c'è niente da aggiungere.

Ma insomma, questo è quello che succede. Quando richiedi (leggi) il carattere successivo da un oggetto InputStreamReader , legge alcuni byte da InputStream passati al costruttore e li restituisce come un carattere.

Ma Reader non è l'oggetto più conveniente con cui lavorare. Spesso ciò di cui abbiamo bisogno non è leggere tutti i caratteri inseriti dall'utente tutti in una volta, ma piuttosto suddividere questi caratteri in righe.

"Ma la classe Reader ha un metodo read (CharBuffer s). Non possiamo usarlo?"

"Questo metodo legge i dati in blocchi della dimensione del buffer e li inserisce nell'oggetto CharBuffer."

Il testo è solitamente diviso in righe. Quindi il metodo read(CharBuffer s) potrebbe leggere più righe contemporaneamente. Se abbiamo bisogno di leggere il testo esattamente fino alla fine di una riga (cioè tutti i caratteri di una riga fino a un carattere di nuova riga), sarebbe meglio cercare qualcos'altro. Ed esiste un metodo alternativo. Nella classe BufferedReader .

La classe BufferedReader , che è una comoda struttura in cima a Reader, ha un metodo molto conveniente: readLine() . Questo metodo ci consente di leggere intere righe di testo da un Reader in una sola volta. Quando chiami readLine nel tuo codice, legge i caratteri dall'oggetto Reader finché non incontra un carattere di nuova riga. Una volta incontrato il carattere di nuova riga, il metodo unisce questi caratteri in un'unica stringa e la restituisce.

"L'ho usato regolarmente, ma non sapevo come funziona. Ora lo so. Grazie, Kim."