Zapisywanie do pliku.

0

Witam.

Mam taki problem mam swoją listę dwukierunkową i chce ją zapisać do pliku, ale nie wiem czemu wywala mi błąd.

Tu metoda zapisu:

public void zapis(String nazwaBazyDanych){
		Element biezacy = poczatek;
		
		try{
			ObjectOutputStream zapis = new ObjectOutputStream(new FileOutputStream(nazwaBazyDanych));

			zapis.writeInt(rozmiarListy);
			while(biezacy!=null){
				zapis.writeObject(biezacy); // tu próbowałem jeszcze  
				biezacy=biezacy.wezNastepny(); //zapis.writeObject(biezacy.wezWartosc);
			}
			
			zapis.close();
		}
		catch(IOException e){
			System.out.print("Błąd zapisu.");
		}
	}

Do tego jak by było potrzeba pozostałych metod z których korzystam to wstawiam:

public Element wezNastepny(){
		return nastepny;
	}

public Element(Samochod auto, Element poprzedni, Element nastepny){ // konstruktor Element
		this.auto	   = auto;
		this.poprzedni = poprzedni;
		this.nastepny   = nastepny;
	}

public Samochod wezWartosc(){
		return auto;
	}

public Samochod(int NR_SILNIKA, String marka, String typ, int dataProdukcji, // konstruktor aut
					double cena, String kolor,int skladowanie,int przecena){
		
		this.NR_SILNIKA		= NR_SILNIKA;
		this.marka			= marka;
		this.typ			= typ;
		this.dataProdukcji	= dataProdukcji;
		this.cena			= cena;
		this.kolor			= kolor;
		this.skladowanie	= skladowanie;
		this.przecena		= przecena;
		
	}
0

JAKI BŁĄD. Zamiast głupiego komunikatu wypisz stacktrace...

0
java.io.NotSerializableException: Element
	at java.io.ObjectOutputStream.writeObject0(Unknown Source)
	at java.io.ObjectOutputStream.writeObject(Unknown Source)
	at Lista.zapis(Lista.java:196)
	at Menu.menu(Menu.java:60)
	at Main.main(Main.java:10)
0

dodałem element

Element biezacy = poczatek;

do bloku try to teraz mam błąd :

java.io.NotSerializableException: Element
	at java.io.ObjectOutputStream.writeObject0(Unknown Source)
	at java.io.ObjectOutputStream.writeObject(Unknown Source)
	at Lista.zapis(Lista.java:197)
	at Menu.menu(Menu.java:60)
	at Main.main(Main.java:10)

0

No ale masz przecież odpowiedź. Klasa element (i każde jej nie-prymitywne i nie-transient i nie-statyczne pole) muszą implementować interfejs Serializable.

0

tak tak napisałem zanim pomyślałem :) ale dzięki bo gdyby nie ten "głupi komunikat" to bym nie wpadł co jest źle :)

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