**This is an old revision of the document!**
<!DOCTYPE markdown>
marp: true
Dateien und Datenströme
Dateien
Dateien: Speicherstrukturen für Daten
Datenströme
Typen von Datenströmen
Byte-Streams
Text (Binär)-Streams
Java I/O-Grundlagen
import java.io.*
Die
java.io-Bibliothek
Wichtigste Klassen in ''%%java.io%%''
Byte-Streams
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class StreamExample {
public static void main(String[] args) {
try (FileOutputStream fos = new FileOutputStream("binary.dat")) {
fos.write(new byte[]{65, 66, 67}); // A, B, C
} catch (IOException e) {
e.printStackTrace();
}
try (FileInputStream fis = new FileInputStream("binary.dat")) {
int b;
while ((b = fis.read()) != -1) {
System.out.print((char) b);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Wichtigste Klassen in ''%%java.io%%''
Text-Streams
Verschiedene Reader/Writer
Arbeiten mit Zeichen und unterstützen Encoding wie UTF-8 oder UTF-16
FileReader/ FileWriter
BufferedReader/ BufferedWriter
''%%FileReader%%''/ ''%%FileWriter%%''
import java.io.FileReader;
import java.io.IOException;
public class FileReaderExample {
public static void main(String[] args) {
try (FileReader reader = new FileReader("example.txt")) {
int ch;
while ((ch = reader.read()) != -1) { // Zeichenweise lesen
System.out.print((char) ch);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
''%%FileReader%%''/ ''%%FileWriter%%''
import java.io.FileWriter;
import java.io.FileReader;
import java.io.IOException;
public class FileReaderWriterExample {
public static void main(String[] args) {
try (FileWriter writer = new FileWriter("example.txt")) {
writer.write("Hallo, Java IO!");
} catch (IOException e) {
e.printStackTrace();
}
try (FileReader reader = new FileReader("example.txt")) {
int ch;
while ((ch = reader.read()) != -1) {
System.out.print((char) ch);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
''%%BufferedReader%%''/ ''%%BufferedWriter%%''
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class BufferedReaderExample {
public static void main(String[] args) {
try (BufferedReader reader = new BufferedReader(new FileReader("example.txt"))) {
String line;
while ((line = reader.readLine()) != null) { // Zeilenweise lesen
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
''%%BufferedReader%%''/ ''%%BufferedWriter%%''
Wann verwende ich was
FileReader
BufferedReader
Best Practices:
try-with-resources: Automatisches Schließen von Streams, um Ressourcenlecks zu vermeiden.
Fehlerbehandlung: Abfangen von IOException für robusteren Code.
What about ''%%Scanner%%''?
Hauptsächliche Verwendung
Nicht nur Dateien lesen kann, sondern auch
Parsen von Eingaben bietet
flexibler, aber oft weniger performant bei großen Datenmengen geht
**Vergleich: Scanner vs BufferedReader vs FileReader**
| Kriterium | FileReader | BufferedReader | Scanner |
| Hauptzweck | Zeichenweise aus Dateien lesen. | Effizientes Lesen von Zeichen und Zeilen. | Lesen und Parsen von Eingaben, z. B. Zahlen oder Strings. |
| Lesemethoden | read() (Zeichenweise). | readLine() (Zeilenweise) oder read(). | Methoden wie nextInt(), nextLine(), next(). |
| Performance | Langsam für große Dateien. | Schnell für große Dateien. | Langsamer bei großen Datenmengen (Parsing braucht Zeit). |
**Wann sollte man welchen verwenden?**
Scanner
BufferedReader
FileReader