logo

Eri tapoja lukea tekstitiedostoa Javassa

Javassa on useita tapoja kirjoittaa ja lukea tekstitiedostoja. tätä vaaditaan käsiteltäessä monia sovelluksia. Javalla on useita tapoja lukea pelkkää tekstiä, esim. voit käyttää FileReader-, BufferedReader- tai Scanneria tekstitiedoston lukemiseen. Jokainen apuohjelma tarjoaa jotain erityistä esim. BufferedReader tarjoaa tietojen puskuroinnin nopeaa lukemista varten, ja Scanner tarjoaa jäsennysmahdollisuuden.

Menetelmät:



  1. Käyttämällä BufferedReader-luokka
  2. Käyttämällä Skanneriluokka
  3. File Reader -luokan käyttäminen
  4. Koko tiedoston lukeminen luettelona
  5. Lue tekstitiedosto merkkijonona

Voimme myös käyttää sekä BufferReaderia että Scanneria tekstitiedoston lukemiseen Javassa rivi riviltä. Sitten Java SE 8 esittelee toisen Stream-luokan java.util.stream.Stream joka tarjoaa laiskan ja tehokkaamman tavan lukea tiedostoa.

Vihje Huomautus: Hyvän koodin kirjoittamisen käytäntöjä, kuten virtojen huuhtelua/sulkemista, poikkeusten käsittelyä jne., on vältetty, jotta myös aloittelijat ymmärtäisivät paremmin koodeja.

Keskustelkaamme jokaisesta yllä olevista menetelmistä syvemmälle ja mikä tärkeintä, toteuttamalla ne puhtaan Java-ohjelman kautta.



1. BufferedReader-luokka tekstitiedoston lukemiseen

Tämä menetelmä lukee tekstiä merkkien syöttövirrasta. Se puskuroi merkkien, taulukoiden ja rivien tehokasta lukemista. Puskurin koko voidaan määrittää tai oletuskokoa voidaan käyttää. Oletusarvo on riittävän suuri useimpiin tarkoituksiin. Yleensä jokainen Readerin tekemä lukupyyntö saa aikaan vastaavan lukupyynnön taustalla olevasta merkki- tai tavuvirrasta. Siksi on suositeltavaa kääriä BufferedReader minkä tahansa Readerin ympärille, jonka read()-toiminnot voivat olla kalliita, kuten FileReaders ja InputStreamReader, kuten alla on esitetty:

Syntaksi

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

Esimerkki



Java


jousenrakentaja



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

>

>

Lähtö

If you want to code refer to techcodeview.com>

2. FileReader-luokka tekstitiedoston lukemiseen

Mukavuusluokka merkkitiedostojen lukemiseen. Tämän luokan rakentajat olettavat, että oletusmerkkikoodaus ja oletusarvoinen tavupuskurin koko ovat sopivia.

Tässä luokassa määritellyt konstruktorit ovat seuraavat:

    FileReader(Tiedostotiedosto): Luo uuden tiedostonlukijan, jolle annetaan tiedosto luettavaksi FileReaderista(FileDescriptor fd): Luo uuden tiedostonlukuohjelman, jolle annetaan tiedostonkuvaaja luettavaksi FileReaderistä(merkkijonotiedostonimi): Luo uuden tiedostonlukuohjelman, jolle annetaan sen nimi. tiedosto josta lukea

Esimerkki

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

>

>

Lähtö

määritellä tietokone
If you want to code refer to techcodeview.com>

3. Skanneriluokka tekstitiedoston lukemiseen

Yksinkertainen tekstiskanneri, joka osaa jäsentää primitiivisiä tyyppejä ja merkkijonoja säännöllisten lausekkeiden avulla. Skanneri jakaa syötteensä tunnuksiksi käyttämällä erotinkuviota, joka oletuksena vastaa välilyöntiä. Tuloksena saadut merkit voidaan sitten muuntaa eri tyyppisiksi arvoiksi käyttämällä erilaisia ​​seuraavia menetelmiä.

Esimerkki 1: Silmukoiden avulla

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

>

>

Lähtö

If you want to code refer to techcodeview.com>

Esimerkki 2: Ilman silmukoita

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

>

>

Lähtö

If you want to code refer to techcodeview.com>

4. Koko tiedoston lukeminen luettelona

Lue kaikki rivit tiedostosta. Tällä menetelmällä varmistetaan, että tiedosto suljetaan, kun kaikki tavut on luettu tai kun I/O-virhe tai muu ajonaikainen poikkeus tapahtuu. Tiedoston tavut puretaan merkeiksi käyttämällä määritettyä merkistöä.

Syntaksi:

public static List readAllLines(Path path,Charset cs)throws IOException>

Tämä menetelmä tunnistaa seuraavat rivinpäätteet:

lue csv javasta
u000D followed by u000A, CARRIAGE RETURN followed by LINE FEED u000A, LINE FEED u000D, CARRIAGE RETURN>

Esimerkki

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

>

>

Lähtö

mitä tämä tarkoittaa xd
If you want to code refer to techcodeview.com>

5. Lue tekstitiedosto merkkijonona

Esimerkki

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

>

>

Lähtö

If you want to code refer to techcodeview.com>