Različiti načini čitanja tekstualne datoteke u Javi
U Javi postoji više načina za čitanje tekstualne datoteke ovisno o veličini podataka i slučaju korištenja. The java.io i java.nio.file paketi osigurati nekoliko klasa za učinkovito rukovanje čitanjem datoteke. Raspravljajmo o uobičajenim pristupima jedan po jedan.
1. Korištenje klase BufferedReader
BufferedReader klasa čita tekst iz toka znakova i sprema znakove u međuspremnik za učinkovito čitanje. Često je omotan oko a FileReader ili InputStreamReader za poboljšanje performansi.
Sintaksa
JavaBufferedReader in = new BufferedReader(Reader in int size);
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 ); } }
Izlaz
Izlaz 2. Klasa FileReader za čitanje tekstualne datoteke
The Klasa FileReader koristi se za čitanje tekstualnih datoteka u Javi. Čita znakove iz datoteke i prikladan je za čitanje običnog teksta. Konstruktori ove klase pretpostavljaju da su zadano kodiranje znakova i zadana veličina međuspremnika bajtova prikladni.
Konstruktori definirani u ovoj klasi su sljedeći:
- FileReader (datoteka): Stvara novi FileReader s obzirom na datoteku za čitanje
- FileReader(FileDescriptor fd): Stvara novi FileReader s obzirom na FileDescriptor za čitanje
- FileReader(string filename): Stvara novi FileReader s nazivom datoteke iz koje se čita
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 ); } }
Izlaz
Izlaz 3. Klasa skenera za čitanje tekstualne datoteke
Klasa skenera pruža jednostavan način čitanja tekstualnih datoteka i raščlanjivanja primitivnih tipova ili nizova pomoću regularni izrazi . Dijeli unos u tokene pomoću razdjelnika (prema zadanim razmacima).
Primjer 1: Uz korištenje petlji
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 ()); } }
Izlaz
Izlaz Primjer 2: Bez upotrebe petlji
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 ()); } }
Izlaz
Izlaz 4. Čitanje cijele datoteke na popisu
Možemo pročitati cijelu tekstualnu datoteku u popis pomoću Files.readAllLines() metoda iz paket java.nio.file . Svaki redak u datoteci postaje jedan element na popisu.
Sintaksa
javni statički popis readAllLines(Path pathCharset cs) izbacuje IOException
Ova metoda prepoznaje sljedeće kao terminatore reda:
- u000Du000A -> Povratak na prvi redak + prelazak na redak
- u000A -> Line Feed
- u000D -> Carriage Return
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 ()); } }
Izlaz
Izlaz 5. Čitanje tekstualne datoteke kao niza
Cijelu tekstualnu datoteku možemo čitati kao jedan String u Javi. Ovo je korisno kada želite obraditi sadržaj datoteke kao cjelinu, a ne liniju po liniju.
Sintaksa:
String data = new String(Files.readAllBytes(Paths.get(fileName)));
Primjer:
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 ); } }
Izlaz
Izlaz