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
Izlaz2. 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
Izlaz3. 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
Javaimport 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
strojopis svaki
IzlazPrimjer 2: Bez upotrebe petlji
Javaimport 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
Izlaz4. Č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
Izlaz5. Č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:
blokiraj oglase na youtube android
String data = new String(Files.readAllBytes(Paths.get(fileName)));
Primjer:
Javapackage 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 Napravi kviz