Olika sätt att läsa en textfil i Java

Olika sätt att läsa en textfil i Java

I Java finns det flera sätt att läsa en textfil beroende på din datastorlek och användningsfall. De java.io och java.nio.file-paket tillhandahålla flera klasser för att hantera filläsning effektivt. Låt oss diskutera de vanliga tillvägagångssätten en efter en.

1. Använda klassen BufferedReader

Bufferad Reader klass läser text från en teckenström och buffrar tecknen för effektiv läsning. Det är ofta virat runt en FileReader eller InputStreamReader för att förbättra prestandan.

Syntax

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

Använder BufferReaderProduktion

2. FileReader-klass för att läsa textfil

De FileReader-klassen används för att läsa textfiler i Java. Den läser tecken från en fil och är lämplig för att läsa vanlig text. Konstruktörerna för denna klass antar att standardteckenkodningen och standardbytebuffertstorleken är lämpliga. 

Konstruktörer som definieras i denna klass är följande:

  • FileReader (filfil): Skapar en ny FileReader med tanke på filen att läsa från
  • FileReader(FileDescriptor fd): Skapar en ny FileReader som får FileDescriptor att läsa från
  • FileReader(String filnamn): Skapar en ny FileReader med namnet på filen att läsa från
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

Använder FileReaderProduktion

3. Skannerklass för att läsa textfil

Skannerklass ger ett enkelt sätt att läsa textfiler och analysera primitiva typer eller strängar med reguljära uttryck . Den delar upp inmatningen i tokens med hjälp av en avgränsare (som standard blanksteg).

Exempel 1: Med hjälp av slingor

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

Använder BufferReaderProduktion

Exempel 2: Utan att använda slingor

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 Hela filen Utan LoopProduktion

4. Läser hela filen i en lista

Vi kan läsa en hel textfil till en lista med hjälp av Files.readAllLines() metod från java.nio.file-paketet . Varje rad i filen blir ett element i listan.

Syntax

offentlig statisk lista readAllLines(Path pathCharset cs) kastar IOException

Denna metod känner igen följande som linjeavslutare: 

  • u000Du000A -> Carriage Return + Line Feed
  • u000A -> Linjematning
  • 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 textfil som String

Vi kan läsa en hel textfil som en enda sträng i Java. Detta är användbart när du vill bearbeta filinnehållet som helhet snarare än rad för rad.

Syntax:

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

Exempel:

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

Skapa frågesport