logo

Diversi modi di leggere un file di testo in Java

In Java esistono diversi modi per leggere un file di testo a seconda della dimensione dei dati e del caso d'uso. IL java.io E pacchetti java.nio.file fornire diverse classi per gestire la lettura dei file in modo efficiente. Discutiamo gli approcci comuni uno per uno.

1. Utilizzo della classe BufferedReader

BufferedReader La classe legge il testo da un flusso di caratteri e memorizza i caratteri nel buffer per una lettura efficiente. È spesso avvolto attorno a a Lettore di file O InputStreamReader per migliorare le prestazioni.

Sintassi

BufferedReader in = new BufferedReader(Lettore in dimensioni int);



Java
import java.io.*; public class UsingBufferReader {  public static void main(String[] args) throws Exception{    // Creating BufferedReader for Input  BufferedReader bfri = new BufferedReader(  new InputStreamReader(System.in));  System.out.print('Enter the Path : ');  // Reading File name  String path = bfri.readLine();  BufferedReader bfro  = new BufferedReader(new FileReader(path));  String st;  while ((st = bfro.readLine()) != null)  System.out.println(st);  } } 


Produzione

UtilizzandoBufferReader' title=Produzione

2. Classe FileReader per leggere file di testo

IL Classe FileReader viene utilizzato per leggere file di testo in Java. Legge i caratteri da un file ed è adatto alla lettura di testo normale. I costruttori di questa classe presuppongono che la codifica dei caratteri predefinita e la dimensione del buffer dei byte predefinita siano appropriate. 

I costruttori definiti in questa classe sono i seguenti:

  • Lettore di file (file di file): Crea un nuovo FileReader dato il file da cui leggere
  • Lettore di file(Descrittore di file fd): Crea un nuovo FileReader dato il FileDescriptor da cui leggere
  • FileReader(String nomefile): Crea un nuovo FileReader con il nome del file da cui leggere
Java
import java.io.*; public class UsingFileReader {  public static void main(String[] args) throws Exception  {  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  System.out.print('Enter the Path : ');    // Reading File name  String path = br.readLine();  FileReader fr = new FileReader(path);  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

Utilizzando FileReader' loading='lazy' title=Produzione

3. Classe scanner per la lettura di file di testo

Classe scanner fornisce un modo semplice per leggere file di testo e analizzare tipi primitivi o stringhe utilizzando espressioni regolari . Divide l'input in token utilizzando un delimitatore (per impostazione predefinita gli spazi bianchi).

Esempio 1: Con l'uso dei loop

Java
import java.io.*; import java.util.Scanner; public class UsingScannerClass  {  public static void main(String[] args) throws Exception  {  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  System.out.print('Enter the Path : ');    // Reading File name  String path = br.readLine();    // pass the path to the file as a parameter  File file = new File(path);    Scanner sc = new Scanner(file);  while (sc.hasNextLine())  System.out.println(sc.nextLine());  } } 


Produzione

matematica rotonda java
UtilizzandoBufferReader' loading='lazy' title=Produzione

Esempio 2: Senza utilizzare loop

Java
import java.io.*; import java.util.Scanner; public class ReadingEntireFileWithoutLoop {  public static void main(String[] args)  throws IOException  {  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  System.out.print('Enter the Path : ');    // Reading File name  String path = br.readLine();    File file = new File(path);    Scanner sc = new Scanner(file);  // we just need to use \Z as delimiter  sc.useDelimiter('\Z');  System.out.println(sc.next());  } } 


Produzione

Lettura dell'intero file senza loop' loading='lazy' title=Produzione

4. Leggere l'intero file in una lista

Possiamo leggere un intero file di testo in un elenco utilizzando il comando Files.readAllLines() metodo da pacchetto java.nio.file . Ogni riga nel file diventa un elemento nell'elenco.

Sintassi

public static List readAllLines(Path pathCharset cs) genera IOException

Questo metodo riconosce quanto segue come terminatori di linea: 

  • u000Du000A -> Ritorno a capo + Avanzamento riga
  • u000A -> Avanzamento riga
  • u000D -> Ritorno a capo
Java
import java.io.*; import java.nio.charset.StandardCharsets; import java.nio.file.*; import java.util.*; public class ReadFileIntoList  {  public static List<String> readFileInList(String fileName)  {  // Created List of String  List<String> lines = Collections.emptyList();    try {  lines = Files.readAllLines(  Paths.get(fileName)  StandardCharsets.UTF_8);  } catch(IOException e) {  e.printStackTrace();  }    return lines;  }    public static void main(String[] args)  throws IOException  {    BufferedReader br = new  BufferedReader(new InputStreamReader(System.in));  System.out.print('Enter the Path : ');    // Reading File name  String path = br.readLine();    List l = readFileInList(path);    // Iterator iterating over List  Iterator<String> itr = l.iterator();    while (itr.hasNext())  System.out.println(itr.next());  } } 


Produzione

LeggiFileInLista' loading='lazy' title=Produzione

5. Legge un file di testo come String

Possiamo leggere un intero file di testo come una singola stringa in Java. Ciò è utile quando si desidera elaborare il contenuto del file nel suo insieme anziché riga per riga.

Sintassi:

trasmissione mediatica

Dati stringa = new String(Files.readAllBytes(Paths.get(fileName)));

Esempio:

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  {  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  System.out.print('Enter the Path : ');    // Reading File name  String path = br.readLine();    String data = readFileAsString(path);    System.out.println(data);  } } 

Produzione

LeggiTestoAsString' loading='lazy' title=Produzione

Crea quiz