Eri tapoja lukea tekstitiedostoa Javassa

Eri tapoja lukea tekstitiedostoa Javassa

Javassa on useita tapoja lukea tekstitiedosto tietokoon ja käyttötapauksen mukaan. The java.io ja java.nio.file -paketit tarjota useita luokkia käsittelemään tiedostojen lukemista tehokkaasti. Keskustellaan yleisistä lähestymistavoista yksitellen.

1. BufferedReader-luokan käyttäminen

Puskuroitu Reader luokka lukee tekstiä merkkivirrasta ja puskuroi merkit tehokkaaseen lukemiseen. Se on usein kääritty ympärille a Tiedostonlukija tai InputStreamReader suorituskyvyn parantamiseksi.

Syntaksi

BufferedReader in = new BufferedReader(Reader int size);

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


Lähtö

Käyttämällä BufferReaderiaLähtö

2. FileReader-luokka tekstitiedoston lukemiseen

The FileReader-luokka käytetään tekstitiedostojen lukemiseen Javassa. Se lukee merkkejä tiedostosta ja sopii pelkän tekstin lukemiseen. Tämän luokan rakentajat olettavat, että oletusmerkkikoodaus ja oletustavupuskurin koko ovat sopivia. 

Tässä luokassa määritellyt konstruktorit ovat seuraavat:

  • FileReader (tiedostotiedosto): Luo uuden FileReaderin, jolle annetaan tiedosto, josta lukea
  • FileReader(FileDescriptor fd): Luo uuden FileReaderin, jolla on luettava FileDescriptor
  • Tiedostonlukija(merkkijono tiedostonimi): Luo uuden FileReaderin, jolle annetaan luettavan tiedoston nimi
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  );      }   }   


Lähtö

Käyttämällä FileReaderiaLähtö

3. Skanneriluokka tekstitiedoston lukemiseen

Skanneriluokka tarjoaa yksinkertaisen tavan lukea tekstitiedostoja ja jäsentää primitiivisiä tyyppejä tai merkkijonoja käyttämällä säännöllisiä lausekkeita . Se jakaa syötteen tunnuksiksi erottimen (oletuksena välilyönnin) avulla.

Esimerkki 1: Silmukoiden avulla

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


Lähtö

Käyttämällä BufferReaderiaLähtö

Esimerkki 2: Ilman silmukoita

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


Lähtö

ReadingEntireFileWithoutLoopLähtö

4. Koko tiedoston lukeminen luettelona

Voimme lukea koko tekstitiedoston luetteloksi käyttämällä Files.readAllLines() menetelmästä java.nio.file-paketti . Jokaisesta tiedoston rivistä tulee yksi luettelon elementti.

Syntaksi

public static List readAllLines(Path pathCharset cs)heittää IOExceptionin

Tämä menetelmä tunnistaa seuraavat rivinpäätteet: 

  • u000Du000A -> Vaunun paluu + rivinvaihto
  • u000A -> rivinsyöttö
  • u000D -> Vaunun paluu
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  ());      }   }   


Lähtö

ReadFileIntoListLähtö

5. Lue tekstitiedosto merkkijonona

Voimme lukea koko tekstitiedoston yhtenä merkkijonona Javassa. Tämä on hyödyllistä, kun haluat käsitellä tiedoston sisällön kokonaisuutena eikä rivi riviltä.

Syntaksi:

Merkkijonotiedot = new String(Files.readAllBytes(Paths.get(tiedostonimi)));

Esimerkki:

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

Lähtö

ReadTextAsStringLähtö

Luo tietokilpailu