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
Produktion2. 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
Produktion3. 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
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()); } }
Produktion
navn på usa by
ProduktionEksempel 2: Uden at bruge løkker
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()); } }
Produktion
Produktion4. 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
Produktion5. 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:
verilog parameter
String data = new String(Files.readAllBytes(Paths.get(fileName)));
Eksempel:
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); } }
Produktion
Produktion Opret quiz