Diferite moduri de a citi un fișier text în Java

Diferite moduri de a citi un fișier text în Java

În Java există mai multe moduri de a citi un fișier text, în funcție de dimensiunea datelor și de cazul de utilizare. The java.io şi pachete java.nio.file oferiți mai multe clase pentru a gestiona eficient citirea fișierelor. Să discutăm abordările comune una câte una.

1. Utilizarea clasei BufferedReader

BufferedReader clasa citește text dintr-un flux de caractere și memorează caracterele pentru o citire eficientă. Este adesea înfășurat în jurul unui FileReader sau InputStreamReader pentru a îmbunătăți performanța.

Sintaxă

BufferedReader in = new BufferedReader (Cititor în dimensiune 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  );      }   }   


Ieșire

Folosind BufferReaderIeșire

2. Clasa FileReader pentru Citirea fișierului text

The Clasa FileReader este folosit pentru a citi fișiere text în Java. Citește caractere dintr-un fișier și este potrivit pentru citirea textului simplu. Constructorii acestei clase presupun că codificarea implicită a caracterelor și dimensiunea implicită a bufferului de octeți sunt adecvate. 

Constructorii definiți în această clasă sunt după cum urmează:

  • FileReader (fișier fișier): Creează un nou FileReader din care să citească fișierul
  • FileReader(FileDescriptor fd): Creează un nou FileReader din care să se citească FileDescriptorul
  • FileReader(String fileName): Creează un nou FileReader cu numele fișierului din care se citește
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  );      }   }   


Ieșire

Folosind FileReaderIeșire

3. Clasă de scaner pentru citirea fișierului text

Clasa de scaner oferă o modalitate simplă de a citi fișiere text și de a analiza tipuri sau șiruri de caractere primitive folosind expresii regulate . Împarte intrarea în token-uri folosind un delimitator (în mod implicit, spații albe).

Exemplul 1: Cu utilizarea buclelor

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  ());      }   }   


Ieșire

Folosind BufferReaderIeșire

Exemplul 2: Fără a folosi bucle

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  ());      }   }   


Ieșire

ReadingEntireFileWithoutLoopIeșire

4. Citirea întregului fișier într-o listă

Putem citi un întreg fișier text într-o listă folosind Files.readAllLines() metoda din pachetul java.nio.file . Fiecare linie din fișier devine un element din listă.

Sintaxă

public static List readAllLines(Path pathCharset cs) aruncă IOException

Această metodă recunoaște următoarele ca terminatori de linie: 

  • u000Du000A -> Întoarcere car + avans de linie
  • u000A -> Line Feed
  • u000D -> Retur transport
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  ());      }   }   


Ieșire

ReadFileIntoListIeșire

5. Citiți un fișier text ca șir

Putem citi un întreg fișier text ca un singur șir în Java. Acest lucru este util atunci când doriți să procesați conținutul fișierului ca întreg, mai degrabă decât rând cu linie.

Sintaxă:

Date șir = new String(Files.readAllBytes(Paths.get(fileName)));

Exemplu:

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  );      }   }   

Ieșire

ReadTextAsStringIeșire

Creați un test