Szövegfájlok olvasásának különböző módjai Java nyelven
Java nyelven többféleképpen is olvashat szöveges fájlokat az adatmérettől és a használati esettől függően. A java.io és java.nio.file csomagok több osztályt biztosít a fájlolvasás hatékony kezeléséhez. Beszéljük meg egyenként az elterjedt megközelítéseket.
1. A BufferedReader osztály használata
BufferedReader osztály szöveget olvas be egy karakterfolyamból, és puffereli a karaktereket a hatékony olvasás érdekében. Gyakran körbetekerik a FileReader vagy InputStreamReader a teljesítmény javítására.
Szintaxis
JavaBufferedReader in = new BufferedReader(Reader int méretben);
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 ); } }
Kimenet
Kimenet 2. FileReader osztály szöveges fájl olvasásához
A FileReader osztály Java szöveges fájlok olvasására szolgál. Karaktereket olvas be egy fájlból, és alkalmas egyszerű szöveg olvasására. Ennek az osztálynak a konstruktorai feltételezik, hogy az alapértelmezett karakterkódolás és az alapértelmezett bájtpufferméret megfelelő.
Az ebben az osztályban meghatározott konstruktorok a következők:
- FileReader (fájlfájl): Létrehoz egy új FileReader-t az olvasandó fájl alapján
- Fájlolvasó (FileDescriptor fd): Létrehoz egy új FileReader-t a FileDescriptorral, amelyből olvasni kell
- Fájlolvasó(karakterlánc fájlnév): Létrehoz egy új FileReader-t az olvasni kívánt fájl nevével
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 ); } }
Kimenet
Kimenet 3. Szkenner osztály szöveges fájl olvasásához
Szkenner osztály egyszerű módot biztosít szöveges fájlok olvasására és primitív típusok vagy karakterláncok elemzésére reguláris kifejezések . A bemenetet tokenekre osztja fel határolóval (alapértelmezés szerint szóközzel).
1. példa: Hurkok használatával
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 ()); } }
Kimenet
Kimenet 2. példa: Hurok használata nélkül
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 ()); } }
Kimenet
Kimenet 4. A teljes fájl beolvasása egy listában
Egy teljes szöveges fájlt beolvashatunk egy listába a segítségével Files.readAllLines() módszer a java.nio.file csomag . A fájl minden sora a lista egy elemévé válik.
Szintaxis
public static List readAllLines(Path pathCharset cs) dobja az IOExceptiont
Ez a metódus a következőket ismeri fel vonallezáróként:
- u000Du000A -> Kocsi visszatérés + soremelés
- u000A -> Soremelés
- u000D -> Kocsi vissza
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 ()); } }
Kimenet
Kimenet 5. Szövegfájl olvasása karakterláncként
Javaban egy teljes szövegfájlt egyetlen Stringként tudunk olvasni. Ez akkor hasznos, ha a fájl tartalmát egészben szeretné feldolgozni, nem pedig soronként.
Szintaxis:
String data = new String(Files.readAllBytes(Paths.get(fileName)));
Példa:
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 ); } }
Kimenet
Kimenet