logo

Verschiedene Möglichkeiten zum Lesen einer Textdatei in Java

In Java gibt es je nach Datengröße und Anwendungsfall mehrere Möglichkeiten, eine Textdatei zu lesen. Der java.io Und java.nio.file-Pakete Stellen Sie mehrere Klassen bereit, um das Lesen von Dateien effizient zu handhaben. Lassen Sie uns nacheinander die gängigen Ansätze besprechen.

1. Verwenden der BufferedReader-Klasse

BufferedReader Die Klasse liest Text aus einem Zeichenstrom und puffert die Zeichen für ein effizientes Lesen. Es wird oft um ein gewickelt FileReader oder InputStreamReader um die Leistung zu verbessern.

Syntax

BufferedReader in = new BufferedReader(Reader in int size);



Java
import java.io.*; public class UsingBufferReader {  public static void main(String[] args) throws Exception{    // Creating BufferedReader for Input  BufferedReader bfri = new BufferedReader(  new InputStreamReader(System.in));  System.out.print('Enter the Path : ');  // Reading File name  String path = bfri.readLine();  BufferedReader bfro  = new BufferedReader(new FileReader(path));  String st;  while ((st = bfro.readLine()) != null)  System.out.println(st);  } } 


Ausgabe

Verwenden von BufferReader' title=Ausgabe

2. FileReader-Klasse zum Lesen von Textdateien

Der FileReader-Klasse wird zum Lesen von Textdateien in Java verwendet. Es liest Zeichen aus einer Datei und eignet sich zum Lesen von Klartext. Die Konstruktoren dieser Klasse gehen davon aus, dass die Standardzeichenkodierung und die Standardbytepuffergröße angemessen sind. 

In dieser Klasse definierte Konstruktoren sind wie folgt:

  • FileReader (Dateidatei): Erstellt einen neuen FileReader mit der Datei, aus der gelesen werden soll
  • FileReader(FileDescriptor fd): Erstellt einen neuen FileReader mit dem FileDescriptor, aus dem gelesen werden soll
  • FileReader(String fileName): Erstellt einen neuen FileReader mit dem Namen der Datei, aus der gelesen werden soll
Java
import java.io.*; public class UsingFileReader {  public static void main(String[] args) throws Exception  {  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  System.out.print('Enter the Path : ');    // Reading File name  String path = br.readLine();  FileReader fr = new FileReader(path);  int i;    // Holds true till there is nothing to read  while ((i = fr.read()) != -1)  // Print all the content of a file  System.out.print((char)i);  } } 


Ausgabe

Verwenden von FileReader' loading='lazy' title=Ausgabe

3. Scannerklasse zum Lesen von Textdateien

Scannerklasse bietet eine einfache Möglichkeit, Textdateien zu lesen und primitive Typen oder Zeichenfolgen zu analysieren reguläre Ausdrücke . Es teilt die Eingabe mithilfe eines Trennzeichens (standardmäßig Leerzeichen) in Token auf.

Beispiel 1: Mit Verwendung von Schleifen

Java
import java.io.*; import java.util.Scanner; public class UsingScannerClass  {  public static void main(String[] args) throws Exception  {  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  System.out.print('Enter the Path : ');    // Reading File name  String path = br.readLine();    // pass the path to the file as a parameter  File file = new File(path);    Scanner sc = new Scanner(file);  while (sc.hasNextLine())  System.out.println(sc.nextLine());  } } 


Ausgabe

Runde Mathematik Java
Verwenden von BufferReader' loading='lazy' title=Ausgabe

Beispiel 2: Ohne Schleifen zu verwenden

Java
import java.io.*; import java.util.Scanner; public class ReadingEntireFileWithoutLoop {  public static void main(String[] args)  throws IOException  {  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  System.out.print('Enter the Path : ');    // Reading File name  String path = br.readLine();    File file = new File(path);    Scanner sc = new Scanner(file);  // we just need to use \Z as delimiter  sc.useDelimiter('\Z');  System.out.println(sc.next());  } } 


Ausgabe

ReadingEntireFileWithoutLoop' loading='lazy' title=Ausgabe

4. Die gesamte Datei in einer Liste lesen

Mit dem können wir eine ganze Textdatei in eine Liste einlesen Files.readAllLines() Methode aus der java.nio.file-Paket . Jede Zeile in der Datei wird zu einem Element in der Liste.

Syntax

öffentliche statische Liste readAllLines(Path pathCharset cs) löst eine IOException aus

Diese Methode erkennt Folgendes als Zeilenabschlusszeichen: 

  • u000Du000A -> Wagenrücklauf + Zeilenvorschub
  • u000A -> Zeilenvorschub
  • u000D -> Wagenrücklauf
Java
import java.io.*; import java.nio.charset.StandardCharsets; import java.nio.file.*; import java.util.*; public class ReadFileIntoList  {  public static List<String> readFileInList(String fileName)  {  // Created List of String  List<String> lines = Collections.emptyList();    try {  lines = Files.readAllLines(  Paths.get(fileName)  StandardCharsets.UTF_8);  } catch(IOException e) {  e.printStackTrace();  }    return lines;  }    public static void main(String[] args)  throws IOException  {    BufferedReader br = new  BufferedReader(new InputStreamReader(System.in));  System.out.print('Enter the Path : ');    // Reading File name  String path = br.readLine();    List l = readFileInList(path);    // Iterator iterating over List  Iterator<String> itr = l.iterator();    while (itr.hasNext())  System.out.println(itr.next());  } } 


Ausgabe

ReadFileIntoList' loading='lazy' title=Ausgabe

5. Lesen Sie eine Textdatei als String

Wir können in Java eine ganze Textdatei als einen einzelnen String lesen. Dies ist nützlich, wenn Sie den Dateiinhalt als Ganzes und nicht Zeile für Zeile verarbeiten möchten.

Syntax:

Fakultät in Java

String data = new String(Files.readAllBytes(Paths.get(fileName)));

Beispiel:

Java
package io; import java.nio.file.*; public class ReadTextAsString {  public static String readFileAsString(String fileName)  throws Exception  {  String data = '';  data = new String(  Files.readAllBytes(Paths.get(fileName)));  return data;  }  public static void main(String[] args) throws Exception  {  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  System.out.print('Enter the Path : ');    // Reading File name  String path = br.readLine();    String data = readFileAsString(path);    System.out.println(data);  } } 

Ausgabe

ReadTextAsString' loading='lazy' title=Ausgabe

Quiz erstellen