logo

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

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

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

navn på usa by
Brug af BufferReader' loading='lazy' title=Produktion

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

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

ReadFileIntoList' loading='lazy' title=Produktion

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:

verilog parameter

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

ReadTextAsString' loading='lazy' title=Produktion

Opret quiz