È possibile leggere da file una linea per volta, invece di un carattere per volta. Questo permette anche la lettura di interi, reali, ecc.
Per poter leggere una linea per volta, è necessario creare un oggetto BufferedReader a partire dal FileReader. In altre parole, si crea prima un FileReader, poi usando questo si crea un BufferedReader. Quest'ultimo si può quindi usare per la lettura riga per riga.
FileReader f; f=new FileReader("prova.txt"); BufferedReader b; b=new BufferedReader(f);
A questo punto si può leggere una riga per volta usando b.readLine().
String s; s=b.readLine();
Ogni volta che si fa b.readLine() si ottiene una nuova riga del file. In altre parole, la prima volta che si fa s=b.readLine(); la variabile s contiene la prima riga del file, la volta successiva che viene eseguito s=b.readLine(); in s viene messa la seconda linea del file.
Per esempio, il programma PrimeDue.java legge e stampa le prime due linee del file prova.txt
import java.io.*; class PrimeDue { public static void main(String args[]) throws IOException { FileReader f; f=new FileReader("prova.txt"); BufferedReader b; b=new BufferedReader(f); String s; s=b.readLine(); System.out.println(s); s=b.readLine(); System.out.println(s); } }
La prima esecuzione di s=b.readLine(); mette in s la prima linea del file. La seconda esecuzione ci mette la seconda linea.
Se l'ultima linea del file è stata già letta, ogni successiva esecuzione di b.readLine() dà null come valore di ritorno. Questo comportamento è simile alla lettura per caratteri, con null al posto di -1
Il ciclo di lettura è quindi simile a quello per leggere tutti i caratteri di un file. Il programma Tutte.java usa un ciclo con break
import java.io.*; class Tutte { public static void main(String args[]) throws IOException { FileReader f; f=new FileReader("prova.txt"); BufferedReader b; b=new BufferedReader(f); String s; while(true) { s=b.readLine(); if(s==null) break; System.out.println(s); } } }
Si può risolvere il problema anche usando un ciclo do-while, come per il caso di lettura carattere per carattere.
Prima va creato il FileReader e poi con questo si crea il BufferedReader
Non ci sono le virgolette su null