Fortgeschrittenes Java Tag 2: Datei-I/O und Serialisierung

Ziel dieses Tages

Heute lernst du:

Am Ende wirst du Dateien lesen, schreiben und Objekte in Java serialisieren können.

Schritt 1: Dateien schreiben

Verwende BufferedWriter mit FileWriter für effizientes Schreiben.


import java.io.*;

try(BufferedWriter writer = new BufferedWriter(new FileWriter("data.txt"))) {
    writer.write("Hallo Advanced Java!");
} catch(IOException e) {
    e.printStackTrace();
}

Schritt 2: Dateien lesen

Verwende BufferedReader mit FileReader für effizientes Lesen.


import java.io.*;

try(BufferedReader reader = new BufferedReader(new FileReader("data.txt"))) {
    String line;
    while((line = reader.readLine()) != null){
        System.out.println(line);
    }
} catch(IOException e) {
    e.printStackTrace();
}

Schritt 3: Objekt-Serialisierung

Serialisierung ermöglicht es dir, Objekte in einer Datei zu speichern und wieder einzulesen.


import java.io.*;

class Person implements Serializable {
    private String name;
    private int age;

    public Person(String name, int age){
        this.name = name;
        this.age = age;
    }

    public String toString() {
        return name + " ist " + age + " Jahre alt.";
    }
}

public class SerializeExample {
    public static void main(String[] args) {
        Person person = new Person("Alice", 25);

        // Serialisieren
        try(ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.dat"))) {
            oos.writeObject(person);
        } catch(IOException e) {
            e.printStackTrace();
        }

        // Deserialisieren
        try(ObjectInputStream ois = new ObjectInputStream(new FileInputStream("person.dat"))) {
            Person readPerson = (Person) ois.readObject();
            System.out.println(readPerson);
        } catch(IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

Übung


import java.io.*;

try(BufferedWriter writer = new BufferedWriter(new FileWriter("data.txt"))) {
    writer.write("Hallo Advanced Java!");
}

try(BufferedReader reader = new BufferedReader(new FileReader("data.txt"))) {
    String line;
    while((line = reader.readLine()) != null){
        System.out.println(line);
    }
}

Aufgabe

Serialisiere ein Objekt in eine Datei und lese es wieder ein.

Schritte:

Beispiel:


import java.io.*;

class Student implements Serializable {
    private String name;
    private int id;

    public Student(String name, int id){
        this.name = name;
        this.id = id;
    }

    public String toString() {
        return "Student: " + name + ", ID: " + id;
    }
}

public class StudentSerialize {
    public static void main(String[] args) {
        Student s = new Student("Bob", 101);

        // Serialisieren
        try(ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("student.dat"))) {
            oos.writeObject(s);
        } catch(IOException e) {
            e.printStackTrace();
        }

        // Deserialisieren
        try(ObjectInputStream ois = new ObjectInputStream(new FileInputStream("student.dat"))) {
            Student readStudent = (Student) ois.readObject();
            System.out.println(readStudent);
        } catch(IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}