Ulike måter å lese en tekstfil på i Java

Ulike måter å lese en tekstfil på i Java

I Java er det flere måter å lese en tekstfil på, avhengig av datastørrelsen og brukstilfellet. De java.io og java.nio.file-pakker gi flere klasser for å håndtere fillesing effektivt. La oss diskutere de vanlige tilnærmingene én etter én.

1. Bruke BufferedReader Class

Bufret Reader klasse leser tekst fra en tegnstrøm og bufre tegnene for effektiv lesing. Den er ofte pakket rundt en FileReader eller InputStreamReader å forbedre ytelsen.

Syntaks

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


Produksjon

Bruker BufferReaderProduksjon

2. FileReader-klasse for lesing av tekstfil

De FileReader-klassen brukes til å lese tekstfiler i Java. Den leser tegn fra en fil og er egnet for lesing av ren tekst. Konstruktørene av denne klassen antar at standard tegnkoding og standard bytebufferstørrelse er passende. 

Konstruktører definert i denne klassen er som følger:

  • FileReader (Filfil): Oppretter en ny FileReader gitt filen å lese fra
  • FileReader(FileDescriptor fd): Oppretter en ny FileReader gitt FileDescriptor å lese fra
  • FileReader (streng filnavn): Oppretter en ny FileReader gitt navnet på filen som skal leses fra
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  );      }   }   


Produksjon

Bruker FileReaderProduksjon

3. Skannerklasse for lesing av tekstfil

Skanner klasse gir en enkel måte å lese tekstfiler og analysere primitive typer eller strenger ved hjelp av regulære uttrykk . Den deler inndataene i tokens ved hjelp av et skilletegn (som standard mellomrom).

Eksempel 1: Med bruk av løkker

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


Produksjon

Bruker BufferReaderProduksjon

Eksempel 2: Uten å bruke løkker

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


Produksjon

Leser hele filen uten løkkeProduksjon

4. Leser hele filen i en liste

Vi kan lese en hel tekstfil inn i en liste ved å bruke Files.readAllLines() metode fra java.nio.file-pakken . Hver linje i filen blir ett element i listen.

Syntaks

offentlig statisk liste readAllLines(Path pathCharset cs) kaster IOException

Denne metoden gjenkjenner følgende som linjeavslutninger: 

  • u000Du000A -> Carriage Return + Line Feed
  • u000A -> Line Feed
  • u000D -> Carriage Return
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  ());      }   }   


Produksjon

ReadFileIntoListProduksjon

5. Les en tekstfil som streng

Vi kan lese en hel tekstfil som en enkelt streng i Java. Dette er nyttig når du vil behandle filinnholdet som en helhet i stedet for linje for linje.

Syntaks:

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

Eksempel:

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

Produksjon

ReadTextAsStringProduksjon

Lag quiz