Er zijn meerdere manieren om een tekstbestand in Java te schrijven en te lezen. dit is nodig bij het omgaan met veel toepassingen. Er zijn verschillende manieren om een gewoon tekstbestand in Java te lezen, b.v. u kunt FileReader, BufferedReader of Scanner gebruiken om een tekstbestand te lezen. Elk hulpprogramma biedt iets speciaals, b.v. BufferedReader biedt buffering van gegevens voor snel lezen, en Scanner biedt parseermogelijkheden.
Methoden:
- Gebruik makend van GebufferdeReader-klasse
- Gebruik makend van Scannerklasse
- Gebruik van de File Reader-klasse
- Het hele bestand in een lijst lezen
- Lees een tekstbestand als String
We kunnen ook zowel BufferReader als Scanner gebruiken om een tekstbestand regel voor regel in Java te lezen. Vervolgens introduceert Java SE 8 nog een Stream-klasse java.util.stream.Stream wat een luie en efficiëntere manier biedt om een bestand te lezen.
Tip Opmerking: Praktijken voor het schrijven van goede code, zoals het leegmaken/sluiten van streams, het afhandelen van uitzonderingen enz., zijn vermeden om de codes ook voor beginners beter te kunnen begrijpen.
Laten we elk van de bovenstaande methoden dieper bespreken en vooral door ze te implementeren via een schoon Java-programma.
1. BufferedReader-klasse voor het lezen van tekstbestanden
Deze methode leest tekst uit een tekeninvoerstroom. Het buffert voor het efficiënt lezen van tekens, arrays en regels. De buffergrootte kan worden gespecificeerd, of de standaardgrootte kan worden gebruikt. De standaardwaarde is groot genoeg voor de meeste doeleinden. In het algemeen zorgt elk leesverzoek van een Reader ervoor dat een corresponderend leesverzoek wordt gedaan van de onderliggende teken- of bytestroom. Het is daarom raadzaam om een BufferedReader rond elke Reader te plaatsen waarvan de read()-bewerkingen kostbaar kunnen zijn, zoals FileReaders en InputStreamReaders, zoals hieronder als volgt weergegeven:
Syntaxis
BufferedReader in = new BufferedReader(Reader in, int size);>
Voorbeeld
Java
overerving in c++
// 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);> > }> }> |
>
>
Uitvoer
If you want to code refer to techcodeview.com>
2. FileReader-klasse voor het lezen van tekstbestanden
Gemaksklasse voor het lezen van tekenbestanden. De constructors van deze klasse gaan ervan uit dat de standaard tekencodering en de standaard byte-buffergrootte geschikt zijn.
Constructors gedefinieerd in deze klasse zijn als volgt:
- FileReader(Bestandsbestand): Creëert een nieuwe FileReader, gegeven het bestand dat moet worden gelezen van FileReader(FileDescriptor fd): Creëert een nieuwe FileReader, gegeven de FileDescriptor die moet worden gelezen van FileReader(String bestandsnaam): Creëert een nieuwe FileReader, gegeven de naam van de bestand waaruit u kunt lezen
Voorbeeld
Java
// 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);> > }> }> |
>
>
Uitvoer
tweevoudig java
If you want to code refer to techcodeview.com>
3. Scannerklasse voor het lezen van tekstbestanden
Een eenvoudige tekstscanner die primitieve typen en tekenreeksen kan ontleden met behulp van reguliere expressies. Een scanner verdeelt zijn invoer in tokens met behulp van een scheidingstekenpatroon, dat standaard overeenkomt met witruimte. De resulterende tokens kunnen vervolgens worden omgezet in waarden van verschillende typen met behulp van de verschillende volgende methoden.
Voorbeeld 1: Met het gebruik van lussen
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());> > }> }> |
>
>
Uitvoer
If you want to code refer to techcodeview.com>
Voorbeeld 2: Zonder gebruik te maken van lussen
Java
// 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());> > }> }> |
>
>
Uitvoer
If you want to code refer to techcodeview.com>
4. Het hele bestand in een lijst lezen
Lees alle regels uit een bestand. Deze methode zorgt ervoor dat het bestand wordt gesloten wanneer alle bytes zijn gelezen of er een I/O-fout of een andere runtime-uitzondering optreedt. Bytes uit het bestand worden gedecodeerd in tekens met behulp van de opgegeven tekenset.
Syntaxis:
public static List readAllLines(Path path,Charset cs)throws IOException>
Deze methode herkent het volgende als lijnafsluitingen:
javascript slaap
u000D followed by u000A, CARRIAGE RETURN followed by LINE FEED u000A, LINE FEED u000D, CARRIAGE RETURN>
Voorbeeld
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());> > }> }> |
>
>
Uitvoer
array.sort in Java
If you want to code refer to techcodeview.com>
5. Lees een tekstbestand als String
Voorbeeld
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);> > }> }> |
>
>
Uitvoer
If you want to code refer to techcodeview.com>