Witam!
Mam problem z serializacja do pliku *.bin. Chcę tam zapisać zawartość ArrayListy, ktora zawiera elemnty zdefiniowanej przeze mnie klasy. W klasie w ktorej tworze owa ArrayListe definiuję metody :
public void Zapisz(String nazwa)throws FileNotFoundException,IOException{
FileOutputStream fos = new FileOutputStream (nazwa);
ObjectOutputStream oos =new ObjectOutputStream (fos);
oos.writeObject(this);
oos.flush();
oos.close();
}
public static ObiektyLista Odczytaj(String nazwa) throws FileNotFoundException, IOException, ClassNotFoundException {
FileInputStream fis = new FileInputStream(nazwa);
ObjectInputStream oin = new ObjectInputStream(fis);
return (ObiektyLista)oin.readObject();
}
Następnie w głownej klasie tworze sobie obiekt tej listy, nastepnie 3 obiekty, ktore dodaje do ArrayListy i wykonuje serializacje:
lista.Zapisz("zapis.bin");
Nastepnie usuwam 3 z kolei obiekt z ArrayListy. Teraz wykonuje deserializacje:
lista=ObiektyLista.Odczytaj("zapis.bin");
Spodziewam sie ze 3 obiekt, ktory przed chwila zostal usuniety powroci na swoje miejsce, gdyz zapisu dokonałem przed usunieciem. Tak się jednak nie dzieje - przy wyswietlaniu otrzymuje dwa obiekty, bez tego ktory zostal usuniety.
Nie wiem na czym polega problem. Serializacji nie robie pierwszy raz - zawsze to jakos dzialalo dlatego w tym przypadku zrobilem analogicznie zeby nie powiedziec tak samo. Ale cos jest nie tak.
Dodam jeszcze, ze plik ktory generuje sie po wywolaniu metody .Zapisz() jest jakis dziwny gdyz jego wnetrze wyglada tak:
¬í sr plik.ObiektyListav.4žó± xp
Przyznaje ze nie mam pojecia co te wszystkie znacznki oznaczaja w takich plikach, natomiast moge powiedziec tyle, ze gdy robilem serializacje w innych przypadkach, owy plik byl wiekszy, bylo tam po prostu znacznie wiecej tekstu a tutaj tylko tyle. Nie wiem czy to dobrze.
Bardzo proszę o pomoc.