Hi ha diverses maneres d'escriure i llegir un fitxer de text a Java. això és necessari mentre es tracta de moltes aplicacions. Hi ha diverses maneres de llegir un fitxer de text senzill a Java, p. podeu utilitzar FileReader, BufferedReader o Scanner per llegir un fitxer de text. Cada utilitat ofereix alguna cosa especial, p. ex. BufferedReader proporciona una memòria intermèdia de dades per a una lectura ràpida, i Scanner proporciona capacitat d'anàlisi.
Mètodes:
- Utilitzant Classe BufferedReader
- Utilitzant Classe d'escàner
- Utilitzant la classe File Reader
- Llegint tot el fitxer en una llista
- Llegeix un fitxer de text com a cadena
També podem utilitzar BufferReader i Scanner per llegir un fitxer de text línia per línia en Java. A continuació, Java SE 8 introdueix una altra classe Stream java.util.stream.Stream que proporciona una manera mandrosa i més eficient de llegir un fitxer.
Nota del consell: També s'han evitat pràctiques d'escriure un bon codi, com ara esborrar/tancar fluxos, maneig d'excepcions, etc., per a una millor comprensió dels codis també per part dels principiants.
Parlem de cadascun dels mètodes anteriors a una profunditat més profunda i, el més important, implementant-los mitjançant un programa java net.
1. Classe BufferedReader per llegir un fitxer de text
Aquest mètode llegeix text d'un flux d'entrada de caràcters. Fa memòria intermèdia per a una lectura eficient de caràcters, matrius i línies. Es pot especificar la mida de la memòria intermèdia o es pot utilitzar la mida predeterminada. El valor predeterminat és prou gran per a la majoria de propòsits. En general, cada sol·licitud de lectura feta d'un lector fa que es faci una sol·licitud de lectura corresponent del caràcter o flux de bytes subjacent. Per tant, és recomanable embolicar un BufferedReader al voltant de qualsevol Reader les operacions de lectura () del qual poden ser costoses, com ara FileReaders i InputStreamReaders, com es mostra a continuació:
Sintaxi
BufferedReader in = new BufferedReader(Reader in, int size);>
Exemple
Java
com llegir el fitxer csv en java
// 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);> > }> }> |
>
>
Sortida
If you want to code refer to techcodeview.com>
2. Classe FileReader per llegir un fitxer de text
Classe de conveniència per llegir fitxers de caràcters. Els constructors d'aquesta classe assumeixen que la codificació de caràcters per defecte i la mida predeterminada de la memòria intermèdia de bytes són adequades.
Els constructors definits en aquesta classe són els següents:
- FileReader (fitxer de fitxers): crea un nou lector de fitxers, donat el fitxer per llegir des de FileReader (FileDescriptor fd): crea un nou FileReader, donat el FileDescriptor per llegir des de FileReader (String fileName): crea un nou FileReader, donat el nom del fitxer. fitxer per llegir
Exemple
Java
longitud de matriu 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);> > }> }> |
>
>
Sortida
If you want to code refer to techcodeview.com>
3. Classe d'escàner per llegir fitxers de text
Un escàner de text senzill que pot analitzar tipus i cadenes primitius mitjançant expressions regulars. Un escàner divideix la seva entrada en fitxes utilitzant un patró delimitador, que per defecte coincideix amb els espais en blanc. Les fitxes resultants es poden convertir en valors de diferents tipus mitjançant els diferents mètodes següents.
Exemple 1: Amb l'ús de bucles
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());> > }> }> |
>
>
Sortida
If you want to code refer to techcodeview.com>
Exemple 2: Sense utilitzar bucles
Java
clau primària i clau composta en sql
// 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());> > }> }> |
>
>
Sortida
If you want to code refer to techcodeview.com>
4. Llegint tot el fitxer en una llista
Llegeix totes les línies d'un fitxer. Aquest mètode assegura que el fitxer es tanca quan s'han llegit tots els bytes o quan es produeix un error d'E/S o una altra excepció en temps d'execució. Els bytes del fitxer es descodifiquen en caràcters mitjançant el conjunt de caràcters especificat.
Sintaxi:
public static List readAllLines(Path path,Charset cs)throws IOException>
Aquest mètode reconeix el següent com a terminadors de línia:
u000D followed by u000A, CARRIAGE RETURN followed by LINE FEED u000A, LINE FEED u000D, CARRIAGE RETURN>
Exemple
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());> > }> }> |
>
>
Sortida
If you want to code refer to techcodeview.com>
5. Llegeix un fitxer de text com a cadena
Exemple
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);> > }> }> |
>
mètodes de cadena
>
Sortida
If you want to code refer to techcodeview.com>