"Ciao, Amigo, ancora una volta."
"Ciao a te, Rishi. Di cosa parlerà la lezione di oggi?"
"Oggi vi parlerò di Reader and Writer."
"Ma, Rishi, so già quasi tutto di loro!"
"La ripetizione è la madre dell'apprendimento."
"Hmm. Bene, va bene."
" Reader e Writer sono analoghi a InputStream e OutputStream , ma funzionano con caratteri, non con byte. A volte sono anche chiamati flussi di caratteri, al contrario di InputStream e OutputStream , che sono chiamati flussi di byte."
"Uno è per i caratteri, l'altro per i byte. Ricordo."
"Non è solo questo. Queste classi sono appositamente progettate per funzionare con testo e stringhe. Oggi esamineremo due implementazioni classiche di queste classi astratte: FileReader e FileWriter ."
"Ecco i metodi della classe FileReader :"
Metodo | Descrizione |
---|---|
int read() |
Legge un carattere dal flusso e lo restituisce. |
int read(char cbuf[], int offset, int length) |
Legge un array di caratteri, restituisce il numero di caratteri letti. |
boolean ready() |
Restituisce vero se è possibile leggere dal flusso. |
void close() |
Chiude il flusso di input. |
int read(java.nio.CharBuffer target) |
Legge un set di caratteri in un buffer. |
int read(char cbuf[]) |
Legge un array di caratteri. |
long skip(long n) |
Salta n caratteri nello stream. |
String getEncoding() |
Restituisce la codifica corrente del flusso. |
"Beh, so quasi tutto questo. Ma per quanto riguarda FileWriter?"
Metodo | Descrizione |
---|---|
void write(int c) |
Scrive un carattere nel flusso. |
void write(char cbuf[], int off, int len) |
Scrive una matrice di caratteri nel flusso. |
void write(char cbuf[]) |
Scrive una matrice di caratteri nel flusso. |
void write(String str, int off, int len) |
Scrive parte di una stringa nel flusso. |
void write(String str) |
Scrive una stringa nel flusso. |
void flush() |
Scrive su disco tutto ciò che è memorizzato nella cache. |
void close() |
Chiude il flusso. |
String getEncoding() |
Restituisce la codifica corrente del flusso. |
"So che!"
"È meraviglioso. Allora diamo un'occhiata a un esempio interessante, e più tardi Diego ti assegnerà altri compiti."
"Come si legge un file riga per riga? Sai scrivere il codice?"
"Facile, guarda:"
// Create a list for storing the lines
List<String> list = new ArrayList<String>();
// Open the file
File file = new File("c:/document.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));
// As long as the file isn't empty, read from it
while (reader.ready())
{
list.add(reader.readLine());
}
// Close the file
reader.close();
"Hmm. Non male."
"Non male? È tutto semplice e bello. Ammettilo, Rishi, ho già un'eccellente padronanza dei thread I/O. Quindi cosa potrebbe essere migliorato qui?"
"Beh, per esempio, potresti fare così:"
File file = new File("c:/document.txt");
List list = Files.readAllLines(file.toPath(), Charset.defaultCharset());
"Hmm. Quello è più breve. E proprio oggi mi hai parlato di tutti questi metodi. Lo rielaborerò. Grazie per la lezione, Rishi."
"Buona fortuna, Amico."
GO TO FULL VERSION