Originariamente inviato da Mariol3
Quello che non capisco è l'utilità di InputStreamReader/OutputStreamReader. Qualcuno può chiarificarmi questo dubbio?
Dipende dall'uso che ne vuoi fare: accedere in lettura/scrittura a files oppure socket (ma qui siamo nell'ambito delle reti dei calcolatori).

Focalizzando l'uso di InputStreamReader nel caso della lettura di files, usando uno stream di caratteri, devi istanziare la classe InputStreamReader (oppure FileReader, che è una sua sottoclasse) e passare questa istanza ad un oggetto della classe BufferedReader.
Invece per la scrittura nel file, usando il medesimo stream, consiglio l'uso di un oggetto della classe PrintStream.