logo

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

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

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

10 av 100,00
Bruker BufferReader' loading='lazy' title=Produksjon

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

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

ReadFileIntoList' loading='lazy' title=Produksjon

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:

java til json-objekt

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

ReadTextAsString' loading='lazy' title=Produksjon

Lag quiz