Overzicht Java I/O Streams

Data importeren in Java

Anthony Markham

VP Quant Developer

Stream basisprincipes

  • Streams zijn unidirectionele datakanalen met FIFO (First In, First Out) volgorde
  • Byte streams werken met ruwe binaire data (InputStream/OutputStream)
  • Karakter streams verwerken tekst met automatische codering (Reader/Writer)

Streams weergave

Data importeren in Java

Byte Streams

  • Gebruikt voor binaire data (afbeeldingen, audio, etc.)
  • Basis abstracte klassen: InputStream (lezen), OutputStream (schrijven)
  • Belangrijke implementaties: FileInputStream, FileOutputStream
  • Belangrijke methoden: read() retourneert bytes, write() schrijft bytes

Binaire bestanden: afbeeldingen en audio

Data importeren in Java

Byte Streams

try (FileInputStream fis = new FileInputStream("data.bin")) {

byte[] buffer = new byte[1024]; int bytesRead;
while ((bytesRead = fis.read(buffer)) != -1) { // Verwerk bytes in buffer
System.out.println("Gelezen " + bytesRead + " bytes"); }
} catch (Exception e) { System.err.println("Fout: " + e.getMessage()); }
Data importeren in Java

Karakter Streams

  • Speciaal ontworpen voor tekstdata
  • Basis abstracte klassen: Reader (lezen tekst), Writer (schrijven tekst)
  • Belangrijke implementaties: FileReader, FileWriter, BufferedReader, BufferedWriter
  • Handige methoden: readLine() leest een volledige regel tekst

CSV-bestanden

Data importeren in Java

Karakter Streams

try (BufferedReader reader = new BufferedReader(new FileReader("data.csv"))) {
    String line;

while ((line = reader.readLine()) != null) { // Verwerk elke regel System.out.println(line); }
} catch (Exception e) { System.err.println("Fout: " + e.getMessage()); }
Data importeren in Java

Buffered Streams - prestaties

  • Verbetert prestaties door minder schijfoperaties
  • Lees/schrijf byte streams met BufferedInputStream en BufferedOutputStream
  • Lees/schrijf karakter streams met BufferedReader, BufferedWriter
    • Lees een hele regel met readLine()
Data importeren in Java

Buffered Streams - prestaties

try (BufferedReader reader = new BufferedReader(new FileReader("data.csv"))) {
    // Header verwerken
    String header = reader.readLine();
    System.out.println("Header: " + header);

// Efficiënt data lezen String line; int count = 0; while ((line = reader.readLine()) != null) { count++; } System.out.println("Gelezen " + count + " datarijen"); } catch (Exception e) { System.out.println("Fout: " + e.getMessage()); }
Data importeren in Java

Stream chaining

  • Elke stream in de keten voegt specifieke functionaliteit toe
  • Veelvoorkomend patroon: FileInputStream -> InputStreamReader -> BufferedReader
  • Sluit altijd de buitenste stream (anderen sluiten automatisch)
Data importeren in Java

Stream chaining

import java.nio.charset.StandardCharsets;
try (

BufferedReader reader = new BufferedReader(
new InputStreamReader(
new FileInputStream("data.csv"),
StandardCharsets.UTF_8 )
)
) { String line; while ((line = reader.readLine()) != null) { System.out.println(line);} } catch (Exception e) { System.err.println("Fout: " + e.getMessage()); }
Data importeren in Java

Foutafhandeling

  • Cruciaal voor I/O-operaties
  • Veelvoorkomende uitzonderingen: IOException, FileNotFoundException
  • Gebruik altijd try-with-resources om uitzonderingen op te vangen
Data importeren in Java

Foutafhandeling

import java.util.ArrayList;
import java.util.List;
public static List<String> readLines(String filePath) throws IOException {

List<String> lines = new ArrayList<>(); try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) { String line; while ((line = reader.readLine()) != null) { lines.add(line); } } // Stream automatisch hier gesloten return lines;
}
Data importeren in Java

Laten we oefenen!

Data importeren in Java

Preparing Video For Download...