Verschillende manieren om een ​​tekstbestand in Java te lezen

Verschillende manieren om een ​​tekstbestand in Java te lezen

In Java zijn er meerdere manieren om een ​​tekstbestand te lezen, afhankelijk van uw gegevensgrootte en gebruiksscenario. De java.io En java.nio.file-pakketten bieden verschillende klassen om het lezen van bestanden efficiënt af te handelen. Laten we de gemeenschappelijke benaderingen één voor één bespreken.

1. Gebruik van de BufferedReader-klasse

Gebufferde Reader class leest tekst uit een tekenstroom en buffert de tekens voor efficiënt lezen. Het wordt vaak rond een gewikkeld Bestandslezer of InputStreamReader om de prestaties te verbeteren.

Syntaxis

BufferedReader in = nieuwe BufferedReader(Lezer in int-grootte);

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


Uitvoer

BufferReader gebruikenUitvoer

2. FileReader-klasse voor het lezen van tekstbestanden

De FileReader-klasse wordt gebruikt om tekstbestanden in Java te lezen. Het leest tekens uit een bestand en is geschikt voor het lezen van platte tekst. De constructors van deze klasse gaan ervan uit dat de standaard tekencodering en de standaard bytebuffergrootte geschikt zijn. 

Constructors gedefinieerd in deze klasse zijn als volgt:

  • FileReader(Bestandsbestand): Creëert een nieuwe FileReader op basis van het bestand waaruit moet worden gelezen
  • FileReader(FileDescriptor fd): Creëert een nieuwe FileReader met de FileDescriptor waaruit kan worden gelezen
  • FileReader(String bestandsnaam): Creëert een nieuwe FileReader met de naam van het bestand waaruit moet worden gelezen
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  );      }   }   


Uitvoer

Bestandslezer gebruikenUitvoer

3. Scannerklasse voor het lezen van tekstbestanden

Scannerklasse biedt een eenvoudige manier om tekstbestanden te lezen en primitieve typen of tekenreeksen te ontleden met behulp van reguliere expressies . Het splitst de invoer in tokens met behulp van een scheidingsteken (standaard witruimte).

Voorbeeld 1: Met het gebruik van lussen

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


Uitvoer

BufferReader gebruikenUitvoer

Voorbeeld 2: Zonder gebruik te maken van lussen

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


Uitvoer

LezenEntireFileWithoutLoopUitvoer

4. Het hele bestand in een lijst lezen

We kunnen een volledig tekstbestand in een lijst lezen met behulp van de Bestanden.readAllLines() methode uit de java.nio.file-pakket . Elke regel in het bestand wordt één element in de lijst.

Syntaxis

public static List readAllLines(Path pathCharset cs) gooit IOException

Deze methode herkent het volgende als lijnafsluitingen: 

  • u000Du000A -> Wagenretour + regelinvoer
  • u000A -> Lijndoorvoer
  • u000D -> Vervoer terug
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  ());      }   }   


Uitvoer

ReadFileIntoListUitvoer

5. Lees een tekstbestand als String

We kunnen een volledig tekstbestand lezen als een enkele string in Java. Dit is handig als u de bestandsinhoud als geheel wilt verwerken in plaats van regel voor regel.

Syntaxis:

Tekenreeksgegevens = nieuwe String(Files.readAllBytes(Paths.get(bestandsnaam)));

Voorbeeld:

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

Uitvoer

ReadTextAsStringUitvoer

Quiz maken