Der er flere måder at skrive og læse en tekstfil på i Java. dette er nødvendigt, mens du håndterer mange applikationer. Der er flere måder at læse en almindelig tekstfil på i Java f.eks. du kan bruge FileReader, BufferedReader eller Scanner til at læse en tekstfil. Ethvert værktøj giver noget særligt f.eks. BufferedReader giver buffering af data til hurtig læsning, og Scanner giver mulighed for at analysere.
Metoder:
- Ved brug af BufferedReader klasse
- Ved brug af Scanner klasse
- Bruger klassen File Reader
- Læsning af hele filen i en liste
- Læs en tekstfil som streng
Vi kan også bruge både BufferReader og Scanner til at læse en tekstfil linje for linje i Java. Så introducerer Java SE 8 endnu en Stream-klasse java.util.stream.Stream som giver en doven og mere effektiv måde at læse en fil på.
Tip Bemærk: Praksis med at skrive god kode som skylning/lukning af strømme, undtagelseshåndtering osv. er blevet undgået for bedre forståelse af koder også for begyndere.
Lad os diskutere hver af ovenstående metoder til en dybere dybde og vigtigst af alt ved at implementere dem via et rent java-program.
1. BufferedReader-klasse til læsning af tekstfil
Denne metode læser tekst fra en tegninputstrøm. Den buffer til effektiv læsning af tegn, arrays og linjer. Bufferstørrelsen kan angives, eller standardstørrelsen kan bruges. Standarden er stor nok til de fleste formål. Generelt bevirker hver læseanmodning lavet af en Reader en tilsvarende læseanmodning til at blive lavet af det underliggende tegn eller bytestrøm. Det er derfor tilrådeligt at pakke en BufferedReader rundt om enhver Reader, hvis read() operationer kan være dyre, såsom FileReaders og InputStreamReaders som vist nedenfor som følger:
Syntaks
BufferedReader in = new BufferedReader(Reader in, int size);>
Eksempel
Java
mysql liste over alle brugere
// 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);> > }> }> |
>
>
Produktion
If you want to code refer to techcodeview.com>
2. FileReader-klasse til læsning af tekstfil
Bekvemmelighedsklasse til læsning af tegnfiler. Konstruktørerne af denne klasse antager, at standardtegnkodningen og standardbyte-bufferstørrelsen er passende.
Konstruktører defineret i denne klasse er som følger:
- FileReader(File file): Opretter en ny FileReader, givet den fil, der skal læses fra FileReader(FileDescriptor fd): Opretter en ny FileReader, givet den FileDescriptor, der skal læses fra FileReader(String fileName): Opretter en ny FileReader, givet navnet på fil at læse fra
Eksempel
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);> > }> }> |
>
>
Produktion
If you want to code refer to techcodeview.com>
3. Scanner klasse til at læse tekstfil
En simpel tekstscanner, der kan analysere primitive typer og strenge ved hjælp af regulære udtryk. En scanner opdeler sit input til tokens ved hjælp af et afgrænsningsmønster, som som standard matcher mellemrum. De resulterende tokens kan derefter konverteres til værdier af forskellige typer ved hjælp af de forskellige næste metoder.
Eksempel 1: Med brug af løkker
Java
javascript onload script
// 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());> > }> }> |
>
>
Produktion
If you want to code refer to techcodeview.com>
Eksempel 2: Uden at bruge løkker
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());> > }> }> |
hvordan man opretter et array i java
>
>
Produktion
If you want to code refer to techcodeview.com>
4. Læsning af hele filen i en liste
Læs alle linjer fra en fil. Denne metode sikrer, at filen lukkes, når alle bytes er blevet læst, eller en I/O-fejl eller anden runtime-undtagelse er kastet. Bytes fra filen afkodes til tegn ved hjælp af det angivne tegnsæt.
Syntaks:
public static List readAllLines(Path path,Charset cs)throws IOException>
Denne metode genkender følgende som linjeterminatorer:
u000D followed by u000A, CARRIAGE RETURN followed by LINE FEED u000A, LINE FEED u000D, CARRIAGE RETURN>
Eksempel
Java
.net tutorial
// 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());> > }> }> |
>
>
Produktion
If you want to code refer to techcodeview.com>
5. Læs en tekstfil som streng
Eksempel
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);> > }> }> |
>
>
Produktion
If you want to code refer to techcodeview.com>