Java:
Een tekstbestand lezen

Hoe:

Een bestand lezen is een fluitje van een cent in Java, vooral met java.nio.file. Hier is een snel voorbeeld:

import java.nio.file.Files;
import java.nio.file.Path;
import java.io.IOException;
import java.util.stream.Stream;

public class FileReadExample {
    public static void main(String[] args) {
        Path filePath = Path.of("example.txt");

        try (Stream<String> lines = Files.lines(filePath)) {
            lines.forEach(System.out::println);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Als je dit uitvoert met example.txt dat “Hallo, bestandlezers!” bevat, zou de uitvoer zijn:

Hallo, bestandlezers!

Diepgaand

Java is geëvolueerd. Vroeger moest je zelf streams en readers beheren - veel boilerplate. Het java.io pakket was helemaal in, met FileReader en BufferedReader vaak gezien in het wild. Toen kwam java.nio, met kanalen en buffers voor meer controle.

Nu is java.nio.file nog hoger niveau. Files en Paths vereenvoudigen de klus. Het bovenstaande voorbeeld gebruikt Files.lines, dat lijnen lui streamed, geweldig voor grote bestanden. Je krijgt ook try-with-resources, dat automatisch streams sluit om lekken te voorkomen.

Alternatieven? Scanner is handig voor het parsen. Apache Commons IO en Google’s Guava hebben hulpmiddelen voor complexere taken, als je ze nodig hebt. Toch brengt standaard Java je meestal al een heel eind.

Wat betreft de implementatie, bestandscodering doet ertoe. Files.lines gaat standaard uit van UTF-8, maar je kunt een andere specificeren. Aan de andere kant moet je bij BufferedReader de Charset vooraf instellen als het niet de standaard is.

Zie ook

Voor meer pit, kijk eens naar deze: