Forskellige måder at læse en tekstfil på i Java

Forskellige måder at læse en tekstfil på i Java

I Java er der flere måder at læse en tekstfil på afhængigt af din datastørrelse og brugssituation. De java.io og java.nio.file-pakker give flere klasser til at håndtere fillæsning effektivt. Lad os diskutere de fælles tilgange én efter én.

1. Brug af BufferedReader-klassen

BufferedReader klasse læser tekst fra en tegnstrøm og buffer tegnene til effektiv læsning. Det er ofte viklet omkring en Fillæser eller InputStreamReader at forbedre ydeevnen.

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


Produktion

Brug af BufferReaderProduktion

2. FileReader-klasse til læsning af tekstfil

De FileReader klasse bruges til at læse tekstfiler i Java. Den læser tegn fra en fil og er velegnet til at læse almindelig tekst. Konstruktørerne af denne klasse antager, at standardtegnkodningen og standardbytebufferstørrelsen er passende. 

Konstruktører defineret i denne klasse er som følger:

  • FileReader (Fil fil): Opretter en ny FileReader givet filen at læse fra
  • FileReader(FileDescriptor fd): Opretter en ny FileReader givet FileDescriptor at læse fra
  • FileReader(String filnavn): Opretter en ny FileReader med navnet på den fil, der skal læses 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  );      }   }   


Produktion

Brug af FileReaderProduktion

3. Scanner klasse til at læse tekstfil

Scanner klasse giver en enkel måde at læse tekstfiler og analysere primitive typer eller strenge ved hjælp af regulære udtryk . Det opdeler inputtet i tokens ved hjælp af en afgrænser (som standard mellemrum).

Eksempel 1: Med brug af 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  ());      }   }   


Produktion

Brug af BufferReaderProduktion

Eksempel 2: Uden at bruge 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  ());      }   }   


Produktion

Læser Hele FilenUden LøkkeProduktion

4. Læsning af hele filen i en liste

Vi kan læse en hel tekstfil ind i en liste ved hjælp af Files.readAllLines() metode fra java.nio.file-pakke . Hver linje i filen bliver til ét element på listen.

Syntaks

offentlig statisk liste readAllLines(Path pathCharset cs) kaster IOException

Denne metode genkender følgende som linjeterminatorer: 

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


Produktion

ReadFileIntoListProduktion

5. Læs en tekstfil som streng

Vi kan læse en hel tekstfil som en enkelt streng i Java. Dette er nyttigt, når du vil behandle filindholdet som en helhed 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  );      }   }   

Produktion

ReadTextAsStringProduktion

Opret quiz