Zapis obiektu do pliku

0

W swoim programie posiadam klasę obiekty, gdzie znajduje się wektor obiektów i dodane obiekty różnych klas.

public class obiekty implements java.io.Serializable
{
    Vector<Towar> obiekty;
   public void  obiekty()
    {
         obiekty = new Vector<Towar>();
    
    // OBIEKTY - zapisane w wektorze
         
    // LAPTOP (Numer ID, Nazwa, Ilość, Wartość netto, Matryca, Dysk, Ram)
    obiekty.add(new Laptop(1, "Acer Aspire", 21, 1575, 15.6, 320, 2));
    obiekty.add(new Laptop(2, "Sony Vaio", 8, 1860, 15.6, 500, 4));
    obiekty.add(new Laptop(3, "Dell Studio", 5, 2100, 15.6, 320, 4));
    obiekty.add(new Laptop(4, "Levono ThinkPad", 11, 2078, 14, 160, 2));
    obiekty.add(new Laptop(5, "Acer TimelineX", 3, 2520, 15.6, 500, 4));
    obiekty.add(new Laptop(6, "Dell E4300", 1, 2389, 13.3, 64, 2));
    obiekty.add(new Laptop(7, "Dell E4200", 2, 2467, 12.1, 128, 4));

    // MONITOR (Numer ID, Nazwa, Ilość, Wartość netto, Matryca)
    obiekty.add(new Monitor(8, "Dell U2410", 9, 674, 21));
    obiekty.add(new Monitor(9, "Samsung SyncMaster", 4, 796, 19));
    obiekty.add(new Monitor(10, "Iiyama ProLite", 10, 820, 24));
    obiekty.add(new Monitor(11, "Asus VW227D", 7, 683, 22));
    obiekty.add(new Monitor(12, "LG Flatron", 28, 501, 23));

    // DRUKARKA (Numer ID, Nazwa, Ilość, Wartość netto, Typ portu)
    obiekty.add(new Drukarka(13, "HP 1120", 20, 273, "USB"));
    obiekty.add(new Drukarka(14, "Espon", 5, 230, "RJ45"));
    obiekty.add(new Drukarka(15, "LaserJet P2035", 3, 589, "USB"));
    obiekty.add(new Drukarka(16, "LaserJet P4515x", 1, 5123, "USB"));
    
    }
}

w innej klasie posiadam opcje zapisu obiektow do pliku, wygląda to tak:

public static final String plik = "obiekty.stan";
    obiekty obiektyZapis = new obiekty();
    protected void zapis()
    {
        try {
            ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(plik));
            oos.writeObject(obiektyZapis);
            oos.flush(); /* zrzuc bufory na dysk */
            oos.close();
            }
        catch (Exception e)
        {
            System.out.println("Blad zapisu.");
        }
    }

Mój problem polega na tym, że gdy np. usune pewien obiekt z wektora poprzez odpowiednia metode to gdy zapisze wszystko do pliku mam ta sama ilość obiektow jak przed usunięciem. Czyli zapisuje mi za każdym razem wszystko to co znajduje się w klasie obiekty.

Metoda usuwania obiektów:

 protected void usunObiekt()
    {
        System.out.print("Podaj numer ID towaru do usunięcia: ");
        int size=obiekty.size();
        this.sprPrzedzial(1, size);
        System.out.println("Obiekt " + obiekty.get(this.n-1).nazwa + " został usunięty.");
        obiekty.removeElementAt(this.n-1);
    }

Proszę o pomoc

0

A żaden Exception ci się po drodze nie wywala? Spróbuj np usunąć plik przed serializacją albo wypisywać sobie długości kolekcji w celach debugowania.

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