logo

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

Există mai multe moduri de a scrie și citi un fișier text în Java. acest lucru este necesar atunci când se ocupă cu multe aplicații. Există mai multe moduri de a citi un fișier text simplu în Java, de ex. puteți utiliza FileReader, BufferedReader sau Scanner pentru a citi un fișier text. Fiecare utilitate oferă ceva special, de ex. BufferedReader oferă stocarea în tampon a datelor pentru citire rapidă, iar Scanner oferă capacitatea de analizare.

Metode:



  1. Folosind Clasa BufferedReader
  2. Folosind Clasa de scaner
  3. Folosind clasa File Reader
  4. Citirea întregului fișier într-o listă
  5. Citiți un fișier text ca șir

De asemenea, putem folosi atât BufferReader, cât și Scanner pentru a citi un fișier text linie cu linie în Java. Apoi Java SE 8 introduce o altă clasă Stream java.util.stream.Stream care oferă o modalitate leneșă și mai eficientă de a citi un fișier.

Sfat Notă: Practicile de scriere a unui cod bun, cum ar fi spălarea/închiderea fluxurilor, gestionarea excepțiilor etc., au fost evitate pentru o mai bună înțelegere a codurilor și de către începători.

Să discutăm fiecare dintre metodele de mai sus la o profunzime mai profundă și, cel mai important, prin implementarea lor printr-un program java curat.



1. Clasa BufferedReader pentru citirea fișierului text

Această metodă citește text dintr-un flux de introducere a caracterelor. Face un tampon pentru citirea eficientă a caracterelor, matricelor și liniilor. Mărimea tamponului poate fi specificată sau poate fi utilizată dimensiunea implicită. Valoarea implicită este suficient de mare pentru majoritatea scopurilor. În general, fiecare cerere de citire făcută de un Reader determină să fie făcută o cerere de citire corespunzătoare a caracterului de bază sau a fluxului de octeți. Prin urmare, este recomandabil să includeți un BufferedReader în jurul oricărui Reader ale cărui operațiuni read() pot fi costisitoare, cum ar fi FileReaders și InputStreamReaders, după cum se arată mai jos, după cum urmează:

Sintaxă

BufferedReader in = new BufferedReader(Reader in, int size);>

Exemplu



Java


scaner în java



// Java Program to illustrate Reading from FileReader> // using BufferedReader Class> // Importing input output classes> import> java.io.*;> // Main class> public> class> GFG {> >// main driver method> >public> static> void> main(String[] args)>throws> Exception> >{> >// File path is passed as parameter> >File file =>new> File(> >'C:UserspankajDesktop est.txt'>);> >// Note: Double backquote is to avoid compiler> >// interpret words> >// like est as (ie. as a escape sequence)> >// Creating an object of BufferedReader class> >BufferedReader br> >=>new> BufferedReader(>new> FileReader(file));> >// Declaring a string variable> >String st;> >// Condition holds true till> >// there is character in a string> >while> ((st = br.readLine()) !=>null>)> >// Print the string> >System.out.println(st);> >}> }>

>

>

Ieșire

If you want to code refer to techcodeview.com>

2. Clasa FileReader pentru Citirea fișierului text

Clasă de confort pentru citirea fișierelor de caractere. 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, având în vedere fișierul de citit din FileReader(FileDescriptor fd): creează un nou FileReader, având în vedere FileDescriptor de citit din FileReader(String fileName): creează un nou FileReader, dat fiind numele fișier din care să citiți

Exemplu

Java




// Java Program to Illustrate reading from> // FileReader using FileReader class> // Importing input output classes> import> java.io.*;> // Main class> // ReadingFromFile> public> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)>throws> Exception> >{> >// Passing the path to the file as a parameter> >FileReader fr =>new> FileReader(> >'C:UserspankajDesktop est.txt'>);> >// Declaring loop variable> >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

If you want to code refer to techcodeview.com>

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

Un scanner de text simplu care poate analiza tipuri și șiruri de caractere primitive folosind expresii regulate. Un scaner își împarte intrarea în jetoane folosind un model de delimitare, care se potrivește implicit cu spațiile albe. Tokenurile rezultate pot fi apoi convertite în valori de diferite tipuri folosind diferitele metode următoare.

Exemplul 1: Cu utilizarea buclelor

Java




// Java Program to illustrate> // reading from Text File> // using Scanner Class> import> java.io.File;> import> java.util.Scanner;> public> class> ReadFromFileUsingScanner {> >public> static> void> main(String[] args)>throws> Exception> >{> >// pass the path to the file as a parameter> >File file =>new> File(> >'C:UserspankajDesktop est.txt'>);> >Scanner sc =>new> Scanner(file);> >while> (sc.hasNextLine())> >System.out.println(sc.nextLine());> >}> }>

>

ce este jquery

>

Ieșire

If you want to code refer to techcodeview.com>

Exemplul 2: Fără a folosi bucle

Java




// Java Program to illustrate reading from FileReader> // using Scanner Class reading entire File> // without using loop> import> java.io.File;> import> java.io.FileNotFoundException;> import> java.util.Scanner;> public> class> ReadingEntireFileWithoutLoop {> >public> static> void> main(String[] args)> >throws> FileNotFoundException> >{> >File file =>new> File(> >'C:UserspankajDesktop est.txt'>);> >Scanner sc =>new> Scanner(file);> >// we just need to use  as delimiter> >sc.useDelimiter(>''>);> >System.out.println(sc.next());> >}> }>

>

>

Ieșire

If you want to code refer to techcodeview.com>

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

Citiți toate rândurile dintr-un fișier. Această metodă asigură că fișierul este închis atunci când toți octeții au fost citiți sau este aruncată o eroare I/O sau o altă excepție de rulare. Octeții din fișier sunt decodați în caractere folosind setul de caractere specificat.

Sintaxă:

scan.nextstring java
public static List readAllLines(Path path,Charset cs)throws IOException>

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

u000D followed by u000A, CARRIAGE RETURN followed by LINE FEED u000A, LINE FEED u000D, CARRIAGE RETURN>

Exemplu

Java




// Java program to illustrate reading data from file> // using nio.File> import> java.io.*;> import> java.nio.charset.StandardCharsets;> import> java.nio.file.*;> import> java.util.*;> public> class> ReadFileIntoList {> >public> static> List> >readFileInList(String fileName)> >{> >List lines = Collections.emptyList();> >try> {> >lines = Files.readAllLines(> >Paths.get(fileName),> >StandardCharsets.UTF_8);> >}> >catch> (IOException e) {> >// do something> >e.printStackTrace();> >}> >return> lines;> >}> >public> static> void> main(String[] args)> >{> >List l = readFileInList(> >'C:UserspankajDesktop est.java'>);> >Iterator itr = l.iterator();> >while> (itr.hasNext())> >System.out.println(itr.next());> >}> }>

>

>

redenumiți directorul pe Linux

Ieșire

If you want to code refer to techcodeview.com>

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

Exemplu

Java




// Java Program to illustrate> // reading from text file> // as string in 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> >{> >String data = readFileAsString(> >'C:UserspankajDesktop est.java'>);> >System.out.println(data);> >}> }>

>

>

Ieșire

If you want to code refer to techcodeview.com>