Forskellige måder at læse en tekstfil på i Java
I Java er der flere måder at læse en tekstfil på afhængigt af din datastørrelse og brugssituation. De java.io og java.nio.file-pakker give flere klasser til at håndtere fillæsning effektivt. Lad os diskutere de fælles tilgange én efter én.
1. Brug af BufferedReader-klassen
BufferedReader klasse læser tekst fra en tegnstrøm og buffer tegnene til effektiv læsning. Det er ofte viklet omkring en Fillæser eller InputStreamReader at forbedre ydeevnen.
Syntaks
JavaBufferedReader in = new BufferedReader(Reader 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 ); } }
Produktion
Produktion 2. FileReader-klasse til læsning af tekstfil
De FileReader klasse bruges til at læse tekstfiler i Java. Den læser tegn fra en fil og er velegnet til at læse almindelig tekst. Konstruktørerne af denne klasse antager, at standardtegnkodningen og standardbytebufferstørrelsen er passende.
Konstruktører defineret i denne klasse er som følger:
- FileReader (Fil fil): Opretter en ny FileReader givet filen at læse fra
- FileReader(FileDescriptor fd): Opretter en ny FileReader givet FileDescriptor at læse fra
- FileReader(String filnavn): Opretter en ny FileReader med navnet på den fil, der skal læses fra
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 ); } }
Produktion
Produktion 3. Scanner klasse til at læse tekstfil
Scanner klasse giver en enkel måde at læse tekstfiler og analysere primitive typer eller strenge ved hjælp af regulære udtryk . Det opdeler inputtet i tokens ved hjælp af en afgrænser (som standard mellemrum).
Eksempel 1: Med brug af løkker
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 ()); } }
Produktion
Produktion Eksempel 2: Uden at bruge løkker
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 ()); } }
Produktion
Produktion 4. Læsning af hele filen i en liste
Vi kan læse en hel tekstfil ind i en liste ved hjælp af Files.readAllLines() metode fra java.nio.file-pakke . Hver linje i filen bliver til ét element på listen.
Syntaks
offentlig statisk liste readAllLines(Path pathCharset cs) kaster IOException
Denne metode genkender følgende som linjeterminatorer:
- u000Du000A -> Carriage Return + Line Feed
- 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 ()); } }
Produktion
Produktion 5. Læs en tekstfil som streng
Vi kan læse en hel tekstfil som en enkelt streng i Java. Dette er nyttigt, når du vil behandle filindholdet som en helhed i stedet for linje for linje.
Syntaks:
String data = new String(Files.readAllBytes(Paths.get(fileName)));
Eksempel:
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 ); } }
Produktion
Produktion