logo

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 BufferReader' title=Produktion

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 FileReader' loading='lazy' title=Produktion

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

hink sortering
Använder BufferReader' loading='lazy' title=Produktion

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 Loop' loading='lazy' title=Produktion

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

ReadFileIntoList' loading='lazy' title=Produktion

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:

hur man konverterar str till int

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

ReadTextAsString' loading='lazy' title=Produktion

Skapa frågesport