Jak zapisać klasę do pliku binarnego

0

Dzień dobry!
Mam taką zabawę na początku studiów, gdzie mam klasy Pomiar i Czas wyglądające tak:

class Czas {
    private int rok;
    private int miesiac;
    private int dzien;
    private int godzina;
    private int minuta;
    
    public Czas(int rok, int miesiac, int dzien, int godzina, int minuta) {
        this.rok = rok;
        this.miesiac = miesiac;
        this.dzien = dzien;
        this.godzina = godzina;
        this.minuta = minuta;
    }
}

class Pomiar {
    private Czas czas;
    private double temperatura;
    
    public Pomiar (Czas czas, double temperatura) {
        this.czas = czas;
        this.temperatura = temperatura;
    } 

Jakiegoś tam klamrowego może brakować, ale to nieważne. Mam zapisać klasę Pomiar do pliku binarnego. Zacząłem tak:

public void Zapisz() {
        try (DataOutputStream fout =  new DataOutputStream(new BufferedOutputStream(new FileOutputStream(
                  "BazaPomiarow.dat"))))
        {
            fout.writeDouble(temperatura);
        }
        catch (IOException e) {
            System.out.println("Błąd wejścia/wyjścia.");
        }
    } 

Z częścią temperaturową jako, że to double nie ma większego problemu, ale co zrobić z tym Czasem? Da się jakoś zapisać typ Czas do tego samego pliku?

1

Dopisz do pomiaru i do Czas implements Serializable i użyj http://docs.oracle.com/javase/7/docs/api/java/io/ObjectOutputStream.html

0

Już na podstawie samej informacji o dodaniu serializacji dałem radę wszystko skutecznie edytować i jest pięknie :) Pytanie mam jeszcze jedno. Tych pomiarów ma być kilka i oprócz tradycyjnego zapisywania mam też w jednej z opcji zapewnić możliwość zapisywania z uwzględnieniem chronologii. Czyli jeśli mam pomiary ze stycznia i marca, to dopisując pomiar z lutego, ma on wskoczyć między nie. Nie chcę tutaj dokładnej rozpiski kodu, co i jak - prosiłbym tylko o podpowiedź, o czym ewentualnie poczytać w dokumentacji, żeby taką sprawę załatwić.

0

Ja bym to wszystko przechowywał w TreeSet a jako comparator dla pomiarów (implements Comparable) dał porównywanie dat, w efekcie w tym zbiorze zawsze będziesz je miał "posortowane" po czasie. Serializowałbym wtedy cały zbór.

1 użytkowników online, w tym zalogowanych: 0, gości: 1