import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.nio.file.Files;
import java.nio.file.Path;

public class SimpanPulihkan {
    public static void main(String[] args)
            throws IOException, ClassNotFoundException {
        Path berkas = Path.of("pegawai.ser");

        Pegawai asli = new Pegawai("Budi", 7_500_000);
        asli.setTokenSementara("TOKEN-RAHASIA-123");

        try (ObjectOutputStream keluar = new ObjectOutputStream(
                Files.newOutputStream(berkas))) {
            keluar.writeObject(asli);
        }
        System.out.println("ukuran berkas : " + Files.size(berkas) + " byte");

        try (ObjectInputStream masuk = new ObjectInputStream(
                Files.newInputStream(berkas))) {
            Pegawai pulih = (Pegawai) masuk.readObject();
            System.out.println("nama          : " + pulih.nama());
            System.out.println("gaji pokok    : " + pulih.gajiPokok());
            System.out.println("token         : " + pulih.tokenSementara());
            System.out.println("objek sama    : " + (pulih == asli));
            System.out.println("isi sama      : " + (pulih.nama().equals(asli.nama())
                    && pulih.gajiPokok() == asli.gajiPokok()));
        }
    }
}
