In Java zijn er meerdere manieren om een tekstbestand te lezen, afhankelijk van uw gegevensgrootte en gebruiksscenario. De java.io En java.nio.file-pakketten bieden verschillende klassen om het lezen van bestanden efficiënt af te handelen. Laten we de gemeenschappelijke benaderingen één voor één bespreken.
1. Gebruik van de BufferedReader-klasse
Gebufferde Reader class leest tekst uit een tekenstroom en buffert de tekens voor efficiënt lezen. Het wordt vaak rond een gewikkeld Bestandslezer of InputStreamReader om de prestaties te verbeteren.
Syntaxis
JavaBufferedReader in = nieuwe BufferedReader(Lezer in int-grootte);
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); } }
Uitvoer
Uitvoer2. FileReader-klasse voor het lezen van tekstbestanden
De FileReader-klasse wordt gebruikt om tekstbestanden in Java te lezen. Het leest tekens uit een bestand en is geschikt voor het lezen van platte tekst. De constructors van deze klasse gaan ervan uit dat de standaard tekencodering en de standaard bytebuffergrootte geschikt zijn.
Constructors gedefinieerd in deze klasse zijn als volgt:
- FileReader(Bestandsbestand): Creëert een nieuwe FileReader op basis van het bestand waaruit moet worden gelezen
- FileReader(FileDescriptor fd): Creëert een nieuwe FileReader met de FileDescriptor waaruit kan worden gelezen
- FileReader(String bestandsnaam): Creëert een nieuwe FileReader met de naam van het bestand waaruit moet worden gelezen
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); } }
Uitvoer
Uitvoer3. Scannerklasse voor het lezen van tekstbestanden
Scannerklasse biedt een eenvoudige manier om tekstbestanden te lezen en primitieve typen of tekenreeksen te ontleden met behulp van reguliere expressies . Het splitst de invoer in tokens met behulp van een scheidingsteken (standaard witruimte).
Voorbeeld 1: Met het gebruik van lussen
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()); } }
Uitvoer
Romeins cijfer 1 tot 100
UitvoerVoorbeeld 2: Zonder gebruik te maken van lussen
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()); } }
Uitvoer
Uitvoer4. Het hele bestand in een lijst lezen
We kunnen een volledig tekstbestand in een lijst lezen met behulp van de Bestanden.readAllLines() methode uit de java.nio.file-pakket . Elke regel in het bestand wordt één element in de lijst.
Syntaxis
public static List readAllLines(Path pathCharset cs) gooit IOException
Deze methode herkent het volgende als lijnafsluitingen:
- u000Du000A -> Wagenretour + regelinvoer
- u000A -> Lijndoorvoer
- u000D -> Vervoer terug
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()); } }
Uitvoer
Uitvoer5. Lees een tekstbestand als String
We kunnen een volledig tekstbestand lezen als een enkele string in Java. Dit is handig als u de bestandsinhoud als geheel wilt verwerken in plaats van regel voor regel.
Syntaxis:
Linux$home
Tekenreeksgegevens = nieuwe String(Files.readAllBytes(Paths.get(bestandsnaam)));
Voorbeeld:
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); } }
Uitvoer
Uitvoer Quiz maken