Diversi modi di leggere un file di testo in Java

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

UtilizzandoBufferReaderProduzione

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 FileReaderProduzione

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

UtilizzandoBufferReaderProduzione

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 dellProduzione

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

LeggiFileInListaProduzione

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:

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

LeggiTestoAsStringProduzione

Crea quiz