Existují následující způsoby, jak číst soubor řádek po řádku.
- Třída BufferedReader
- Třída skeneru
Použití třídy BufferedReader
Použití třídy Java BufferedRedaer je nejběžnějším a nejjednodušším způsobem čtení souboru řádek po řádku v Javě. Patří k java.io balík. Třída Java BufferedReader poskytuje metodu readLine() pro čtení souboru řádek po řádku. Podpis metody je:
public String readLine() throws IOException
Metoda čte řádek textu. Vrací řetězec obsahující obsah řádku. Řádek musí být ukončen jedním z odřádkování (' ') nebo konce řádku (' ').
Příklad čtení souboru řádek po řádku pomocí třídy BufferedReader
V následujícím příkladu je Demo.txt čten třídou FileReader. Metoda readLine() třídy BufferedReader čte soubor řádek po řádku a každý řádek připojený k StringBuffer, po kterém následuje posun řádku. Obsah StringBuffer je pak vydán do konzole.
import java.io.*; public class ReadLineByLineExample1 { public static void main(String args[]) { try { File file=new File('Demo.txt'); //creates a new file instance FileReader fr=new FileReader(file); //reads the file BufferedReader br=new BufferedReader(fr); //creates a buffering character input stream StringBuffer sb=new StringBuffer(); //constructs a string buffer with no characters String line; while((line=br.readLine())!=null) { sb.append(line); //appends line to string buffer sb.append(' '); //line feed } fr.close(); //closes the stream and release the resources System.out.println('Contents of File: '); System.out.println(sb.toString()); //returns a string that textually represents the object } catch(IOException e) { e.printStackTrace(); } } }
Výstup:
Použití třídy Scanner
Jáva Skener třída poskytuje více obslužných metod ve srovnání s třídou BufferedReader. Třída Java Scanner poskytuje metodu nextLine() pro usnadnění řádků obsahu souboru. Metody nextLine() vrací stejný řetězec jako metoda readLine(). Třída Scanner může také číst soubor ve formátu InputStream.
Příklad čtení souboru řádek po řádku pomocí třídy Scanner
import java.io.*; import java.util.Scanner; public class ReadLineByLineExample2 { public static void main(String args[]) { try { //the file to be opened for reading FileInputStream fis=new FileInputStream('Demo.txt'); Scanner sc=new Scanner(fis); //file to be scanned //returns true if there is another line to read while(sc.hasNextLine()) { System.out.println(sc.nextLine()); //returns the line that was skipped } sc.close(); //closes the scanner } catch(IOException e) { e.printStackTrace(); } } }
Výstup: