Überblick über Java I/O-Streams

Daten in Java importieren

Anthony Markham

VP Quant Developer

Grundlagen der Streams

  • Streams sind unidirektionale Datenleitungen mit FIFO (First In, First Out) Ordnung
  • Byte-Streams arbeiten mit rohen Binärdaten (InputStream/OutputStream)
  • Zeichen-Streams verarbeiten Text mit automatischer Kodierung (Reader/Writer)

Darstellung von Streams

Daten in Java importieren

Byte-Streams

  • Verwendet für Binärdaten (Bilder, Audio, etc.)
  • Abstrakte Basisklassen: InputStream (lesen), OutputStream (schreiben)
  • Wichtige Implementierungen: FileInputStream, FileOutputStream
  • Wichtige Methoden: read() gibt Bytes zurück, write() gibt Bytes aus

Binärdateien: Bilder und Audios

Daten in Java importieren

Byte-Streams

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

byte[] buffer = new byte[1024]; int bytesRead;
while ((bytesRead = fis.read(buffer)) != -1) { // Bytes im Puffer verarbeiten
System.out.println("Gelesene Bytes: " + bytesRead); }
} catch (Exception e) { System.err.println("Fehler: " + e.getMessage()); }
Daten in Java importieren

Zeichen-Streams

  • Speziell für Textdaten entwickelt
  • Abstrakte Basisklassen: Reader (Text lesen), Writer (Text schreiben)
  • Wichtige Implementierungen: FileReader, FileWriter, BufferedReader, BufferedWriter
  • Praktische Methoden: readLine() liest eine ganze Textzeile

CSV-Dateien

Daten in Java importieren

Zeichen-Streams

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

while ((line = reader.readLine()) != null) { // Jede Zeile verarbeiten System.out.println(line); }
} catch (Exception e) { System.err.println("Fehler: " + e.getMessage()); }
Daten in Java importieren

Gepufferte Streams - Leistung

  • Verbessert die Leistung durch weniger Festplattenzugriffe
  • Lese-/Schreib-Byte-Streams mit BufferedInputStream und BufferedOutputStream
  • Lese-/Schreib-Zeichen-Streams mit BufferedReader, BufferedWriter
    • Ganze Zeile lesen mit readLine()
Daten in Java importieren

Gepufferte Streams - Leistung

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

// Effizientes Lesen von Daten String line; int count = 0; while ((line = reader.readLine()) != null) { count++; } System.out.println("Gelesene Datenzeilen: " + count); } catch (Exception e) { System.out.println("Fehler: " + e.getMessage()); }
Daten in Java importieren

Stream-Verkettung

  • Jeder Stream in der Kette fügt spezifische Funktionen hinzu
  • Häufiges Muster: FileInputStream -> InputStreamReader -> BufferedReader
  • Schließe immer den äußersten Stream (andere schließen automatisch)
Daten in Java importieren

Stream-Verkettung

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("Fehler: " + e.getMessage()); }
Daten in Java importieren

Fehlerbehandlung

  • Wichtig für I/O-Operationen
  • Häufige Ausnahmen: IOException, FileNotFoundException
  • Immer try-with-resources verwenden, um Ausnahmen abzufangen
Daten in Java importieren

Fehlerbehandlung

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 wird hier automatisch geschlossen return lines;
}
Daten in Java importieren

Lass uns üben!

Daten in Java importieren

Preparing Video For Download...