logo

Diferite moduri de a citi un fișier text în Java

În Java există mai multe moduri de a citi un fișier text, în funcție de dimensiunea datelor și de cazul de utilizare. The java.io şi pachete java.nio.file oferiți mai multe clase pentru a gestiona eficient citirea fișierelor. Să discutăm abordările comune una câte una.

1. Utilizarea clasei BufferedReader

BufferedReader clasa citește text dintr-un flux de caractere și memorează caracterele pentru o citire eficientă. Este adesea înfășurat în jurul unui FileReader sau InputStreamReader pentru a îmbunătăți performanța.

Sintaxă

BufferedReader in = new BufferedReader (Cititor în dimensiune int);



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


Ieșire

Folosind BufferReader' title=Ieșire

2. Clasa FileReader pentru Citirea fișierului text

The Clasa FileReader este folosit pentru a citi fișiere text în Java. Citește caractere dintr-un fișier și este potrivit pentru citirea textului simplu. Constructorii acestei clase presupun că codificarea implicită a caracterelor și dimensiunea implicită a bufferului de octeți sunt adecvate. 

Constructorii definiți în această clasă sunt după cum urmează:

  • FileReader (fișier fișier): Creează un nou FileReader din care să citească fișierul
  • FileReader(FileDescriptor fd): Creează un nou FileReader din care să se citească FileDescriptorul
  • FileReader(String fileName): Creează un nou FileReader cu numele fișierului din care se citește
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);  } } 


Ieșire

Folosind FileReader' loading='lazy' title=Ieșire

3. Clasă de scaner pentru citirea fișierului text

Clasa de scaner oferă o modalitate simplă de a citi fișiere text și de a analiza tipuri sau șiruri de caractere primitive folosind expresii regulate . Împarte intrarea în token-uri folosind un delimitator (în mod implicit, spații albe).

Exemplul 1: Cu utilizarea buclelor

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


Ieșire

ce este computerul
Folosind BufferReader' loading='lazy' title=Ieșire

Exemplul 2: Fără a folosi bucle

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


Ieșire

ReadingEntireFileWithoutLoop' loading='lazy' title=Ieșire

4. Citirea întregului fișier într-o listă

Putem citi un întreg fișier text într-o listă folosind Files.readAllLines() metoda din pachetul java.nio.file . Fiecare linie din fișier devine un element din listă.

Sintaxă

public static List readAllLines(Path pathCharset cs) aruncă IOException

Această metodă recunoaște următoarele ca terminatori de linie: 

  • u000Du000A -> Întoarcere car + avans de linie
  • u000A -> Line Feed
  • u000D -> Retur transport
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());  } } 


Ieșire

ReadFileIntoList' loading='lazy' title=Ieșire

5. Citiți un fișier text ca șir

Putem citi un întreg fișier text ca un singur șir în Java. Acest lucru este util atunci când doriți să procesați conținutul fișierului ca întreg, mai degrabă decât rând cu linie.

Sintaxă:

ce este s în python

Date șir = new String(Files.readAllBytes(Paths.get(fileName)));

Exemplu:

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

Ieșire

ReadTextAsString' loading='lazy' title=Ieșire

Creați un test