Es gibt mehrere Möglichkeiten, eine Textdatei in Java zu schreiben und zu lesen. Dies ist bei vielen Anwendungen erforderlich. Es gibt verschiedene Möglichkeiten, eine reine Textdatei in Java zu lesen, z. Sie können FileReader, BufferedReader oder Scanner verwenden, um eine Textdatei zu lesen. Jedes Dienstprogramm bietet etwas Besonderes, z. BufferedReader ermöglicht die Pufferung von Daten zum schnellen Lesen und Scanner bietet Analysefunktionen.
Methoden:
- Benutzen BufferedReader-Klasse
- Benutzen Scannerklasse
- Verwenden der File Reader-Klasse
- Die gesamte Datei in einer Liste lesen
- Lesen Sie eine Textdatei als String
Wir können auch sowohl BufferReader als auch Scanner verwenden, um eine Textdatei Zeile für Zeile in Java zu lesen. Dann führt Java SE 8 eine weitere Stream-Klasse ein java.util.stream.Stream Dies bietet eine verzögerte und effizientere Möglichkeit, eine Datei zu lesen.
Tipp-Hinweis: Praktiken zum Schreiben von gutem Code wie das Leeren/Schließen von Streams, Ausnahmebehandlung usw. wurden vermieden, um auch Anfängern ein besseres Verständnis des Codes zu ermöglichen.
Lassen Sie uns jede der oben genannten Methoden genauer besprechen und, was am wichtigsten ist, indem wir sie über ein sauberes Java-Programm implementieren.
1. BufferedReader-Klasse zum Lesen von Textdateien
Diese Methode liest Text aus einem Zeicheneingabestream. Es puffert für das effiziente Lesen von Zeichen, Arrays und Zeilen. Die Puffergröße kann angegeben werden, oder es kann die Standardgröße verwendet werden. Der Standardwert ist für die meisten Zwecke groß genug. Im Allgemeinen führt jede Leseanforderung an einen Reader dazu, dass eine entsprechende Leseanforderung für das zugrunde liegende Zeichen oder den zugrunde liegenden Bytestrom gestellt wird. Es ist daher ratsam, einen BufferedReader um jeden Reader zu wickeln, dessen read()-Vorgänge möglicherweise kostspielig sind, wie z. B. FileReaders und InputStreamReaders, wie unten gezeigt:
Syntax
BufferedReader in = new BufferedReader(Reader in, int size);>
Beispiel
Java
Verzeichnisnamen unter Linux ändern
// Java Program to illustrate Reading from FileReader> // using BufferedReader Class> // Importing input output classes> import> java.io.*;> // Main class> public> class> GFG {> > // main driver method> > public> static> void> main(String[] args)> throws> Exception> > {> > // File path is passed as parameter> > File file => new> File(> > 'C:UserspankajDesktop est.txt'> );> > // Note: Double backquote is to avoid compiler> > // interpret words> > // like est as (ie. as a escape sequence)> > // Creating an object of BufferedReader class> > BufferedReader br> > => new> BufferedReader(> new> FileReader(file));> > // Declaring a string variable> > String st;> > // Condition holds true till> > // there is character in a string> > while> ((st = br.readLine()) !=> null> )> > // Print the string> > System.out.println(st);> > }> }> |
>
>
Ausgabe
If you want to code refer to techcodeview.com>
2. FileReader-Klasse zum Lesen von Textdateien
Komfortklasse zum Lesen von Zeichendateien. 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(File file): Erstellt einen neuen FileReader mit der Datei, aus der er gelesen werden soll. FileReader(FileDescriptor fd): Erstellt einen neuen FileReader mit dem FileDescriptor, aus dem er gelesen werden soll. FileReader(String fileName): Erstellt einen neuen FileReader mit dem Namen Datei, aus der gelesen werden soll
Beispiel
Java
wie viele Wochen pro Monat
// Java Program to Illustrate reading from> // FileReader using FileReader class> // Importing input output classes> import> java.io.*;> // Main class> // ReadingFromFile> public> class> GFG {> > // Main driver method> > public> static> void> main(String[] args)> throws> Exception> > {> > // Passing the path to the file as a parameter> > FileReader fr => new> FileReader(> > 'C:UserspankajDesktop est.txt'> );> > // Declaring loop variable> > 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
If you want to code refer to techcodeview.com>
3. Scannerklasse zum Lesen von Textdateien
Ein einfacher Textscanner, der primitive Typen und Zeichenfolgen mithilfe regulärer Ausdrücke analysieren kann. Ein Scanner unterteilt seine Eingabe mithilfe eines Trennzeichenmusters in Token, das standardmäßig mit Leerzeichen übereinstimmt. Die resultierenden Token können dann mithilfe der verschiedenen nächsten Methoden in Werte unterschiedlichen Typs umgewandelt werden.
Beispiel 1: Mit Schleifen
Java
// Java Program to illustrate> // reading from Text File> // using Scanner Class> import> java.io.File;> import> java.util.Scanner;> public> class> ReadFromFileUsingScanner {> > public> static> void> main(String[] args)> throws> Exception> > {> > // pass the path to the file as a parameter> > File file => new> File(> > 'C:UserspankajDesktop est.txt'> );> > Scanner sc => new> Scanner(file);> > while> (sc.hasNextLine())> > System.out.println(sc.nextLine());> > }> }> |
>
>
Ausgabe
If you want to code refer to techcodeview.com>
Beispiel 2: Ohne Schleifen zu verwenden
Java
Blasensortierung im Algorithmus
// Java Program to illustrate reading from FileReader> // using Scanner Class reading entire File> // without using loop> import> java.io.File;> import> java.io.FileNotFoundException;> import> java.util.Scanner;> public> class> ReadingEntireFileWithoutLoop {> > public> static> void> main(String[] args)> > throws> FileNotFoundException> > {> > File file => new> File(> > 'C:UserspankajDesktop est.txt'> );> > Scanner sc => new> Scanner(file);> > // we just need to use as delimiter> > sc.useDelimiter(> ''> );> > System.out.println(sc.next());> > }> }> |
>
>
Ausgabe
If you want to code refer to techcodeview.com>
4. Die gesamte Datei in einer Liste lesen
Alle Zeilen aus einer Datei lesen. Diese Methode stellt sicher, dass die Datei geschlossen wird, wenn alle Bytes gelesen wurden oder ein E/A-Fehler oder eine andere Laufzeitausnahme ausgelöst wird. Bytes aus der Datei werden mithilfe des angegebenen Zeichensatzes in Zeichen dekodiert.
Syntax:
public static List readAllLines(Path path,Charset cs)throws IOException>
Diese Methode erkennt Folgendes als Zeilenabschlusszeichen:
u000D followed by u000A, CARRIAGE RETURN followed by LINE FEED u000A, LINE FEED u000D, CARRIAGE RETURN>
Beispiel
Java
// Java program to illustrate reading data from file> // using nio.File> import> java.io.*;> import> java.nio.charset.StandardCharsets;> import> java.nio.file.*;> import> java.util.*;> public> class> ReadFileIntoList {> > public> static> List> > readFileInList(String fileName)> > {> > List lines = Collections.emptyList();> > try> {> > lines = Files.readAllLines(> > Paths.get(fileName),> > StandardCharsets.UTF_8);> > }> > catch> (IOException e) {> > // do something> > e.printStackTrace();> > }> > return> lines;> > }> > public> static> void> main(String[] args)> > {> > List l = readFileInList(> > 'C:UserspankajDesktop est.java'> );> > Iterator itr = l.iterator();> > while> (itr.hasNext())> > System.out.println(itr.next());> > }> }> |
>
>
Ausgabe
If you want to code refer to techcodeview.com>
5. Lesen Sie eine Textdatei als String
Beispiel
Java
// Java Program to illustrate> // reading from text file> // as string in 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> > {> > String data = readFileAsString(> > 'C:UserspankajDesktop est.java'> );> > System.out.println(data);> > }> }> |
Polymorphismus Java
>
>
Ausgabe
If you want to code refer to techcodeview.com>