Esistono diversi modi per scrivere e leggere un file di testo in Java. questo è necessario quando si tratta di molte applicazioni. Esistono diversi modi per leggere un file di testo normale in Java, ad es. puoi utilizzare FileReader, BufferedReader o Scanner per leggere un file di testo. Ogni utilità fornisce qualcosa di speciale, ad es. BufferedReader fornisce il buffering dei dati per una lettura rapida e Scanner fornisce capacità di analisi.
Metodi:
- Utilizzando Classe BufferedReader
- Utilizzando Classe scanner
- Utilizzando la classe Lettore di file
- Leggere l'intero file in una lista
- Legge un file di testo come String
Possiamo anche utilizzare sia BufferReader che Scanner per leggere un file di testo riga per riga in Java. Quindi Java SE 8 introduce un'altra classe Stream java.util.stream.Stream che fornisce un modo lento ed efficiente per leggere un file.
Suggerimento Nota: Le pratiche di scrittura di un buon codice come lo svuotamento/chiusura dei flussi, la gestione delle eccezioni, ecc., sono state evitate per una migliore comprensione dei codici anche da parte dei principianti.
Discuteremo ciascuno dei metodi di cui sopra in modo più approfondito e, soprattutto, implementandoli tramite un programma Java pulito.
1. Classe BufferedReader per la lettura di file di testo
Questo metodo legge il testo da un flusso di input di caratteri. Fa buffer per la lettura efficiente di caratteri, matrici e linee. È possibile specificare la dimensione del buffer oppure utilizzare la dimensione predefinita. L'impostazione predefinita è sufficientemente grande per la maggior parte degli scopi. In generale, ogni richiesta di lettura effettuata da un Reader provoca l'esecuzione di una corrispondente richiesta di lettura del carattere o del flusso di byte sottostante. È quindi consigliabile avvolgere un BufferedReader attorno a qualsiasi Reader le cui operazioni read() possono essere costose, come FileReaders e InputStreamReaders come mostrato di seguito come segue:
Sintassi
BufferedReader in = new BufferedReader(Reader in, int size);>
Esempio
Giava
operatore condizionale in 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);> > }> }> |
>
>
Produzione
If you want to code refer to techcodeview.com>
2. Classe FileReader per leggere file di testo
Classe pratica per la lettura di file di caratteri. I costruttori di questa classe presuppongono che la codifica dei caratteri predefinita e la dimensione del buffer di byte predefinita siano appropriate.
I costruttori definiti in questa classe sono i seguenti:
- FileReader(File file): Crea un nuovo FileReader, dato il File da leggere da FileReader(FileDescriptor fd): Crea un nuovo FileReader, dato il FileDescriptor da leggere da FileReader(String fileName): Crea un nuovo FileReader, dato il nome del file da cui leggere
Esempio
Giava
pitone rstrip
// 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);> > }> }> |
>
>
Produzione
If you want to code refer to techcodeview.com>
3. Classe scanner per la lettura di file di testo
Un semplice scanner di testo in grado di analizzare tipi e stringhe primitivi utilizzando espressioni regolari. Uno scanner suddivide il suo input in token utilizzando un modello delimitatore, che per impostazione predefinita corrisponde allo spazio bianco. I token risultanti possono quindi essere convertiti in valori di diverso tipo utilizzando i vari metodi successivi.
Esempio 1: Con l'uso dei loop
Giava
// 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());> > }> }> |
>
>
Produzione
If you want to code refer to techcodeview.com>
Esempio 2: Senza utilizzare loop
Giava
// 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());> > }> }> |
>
>
Produzione
If you want to code refer to techcodeview.com>
4. Leggere l'intero file in una lista
Leggere tutte le righe da un file. Questo metodo garantisce che il file venga chiuso quando tutti i byte sono stati letti o viene generato un errore I/O o un'altra eccezione di runtime. I byte del file vengono decodificati in caratteri utilizzando il set di caratteri specificato.
Sintassi:
public static List readAllLines(Path path,Charset cs)throws IOException>
Questo metodo riconosce quanto segue come terminatori di linea:
u000D followed by u000A, CARRIAGE RETURN followed by LINE FEED u000A, LINE FEED u000D, CARRIAGE RETURN>
Esempio
codice di esempio c#
Giava
// 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());> > }> }> |
>
>
Produzione
If you want to code refer to techcodeview.com>
5. Legge un file di testo come String
Esempio
puntatori in c
Giava
// 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);> > }> }> |
>
>
Produzione
If you want to code refer to techcodeview.com>