Hej.
Mam problem z programem który używa mechanizmu serializowania danych.
Klasa Magazyn zawierająca konstruktor tworzący tablice typu Towar.
Klasa Magazyn
package klasy;
import java.io.*;
public class Magazyn implements Serializable
{
private static int liczbaTowarow;
public Towar tab[];
String nazwaPliku="C:\\pliczek.txt";
public Magazyn()
{
tab = new Towar[10];
liczbaTowarow=0;
}
public void dodaj(Towar t)
{
//System.out.println("funkcja dodaj "+t);
tab[liczbaTowarow]=t;
liczbaTowarow++;
}
public void wyswietl() throws NullPointerException
{try{
System.out.println("Funkcja 'wyswietl()' z klasy magazyn");
for (int i = 0; i < 10; i++)
{ if(tab[i]!=null)
{
// System.out.println(tab[i]);
tab[i].wyswietlWszystko();
}
//else System.out.println("tutaj jest "+tab[i]);
}
}
catch(NullPointerException e)
{
System.out.println("Blad! przerywamy! tutaj wystepuje blad "+e);
}
}
/////////////tutaj funkcje odczytujace tablice z pliku ///////////
public void odczytajPlik(String nazwaPliku)throws IOException,ClassNotFoundException, NullPointerException
{ System.out.println("Funckcja 'odczytajPlik' z klasy magazyn");
Towar tab[] = new Towar[100];// byl Magazyn zamiast Towar
ObjectInputStream plik=null;
try
{
plik = new ObjectInputStream(new FileInputStream(nazwaPliku));
int i=0;
while(true)
{
tab[i++]=(Towar)plik.readObject();//byl magazyn zamiast Towar
}
}
catch(EOFException e)
{
if(plik!=null)
plik.close();
}
catch(NullPointerException e)
{
System.out.println("blad wskaznika"+e);
}
}
////////////////////tutaj funkcja dopisujaca do pliku//////////////////////////////////
public void dopiszPlik (String nazwaPliku) throws IOException, ClassNotFoundException
{
ObjectOutputStream plik2=null;
try
{
plik2=new ObjectOutputStream(new FileOutputStream(nazwaPliku));
System.out.println("Funkcja 'dopisz plik()' z klasy magazyn");
for(int i=0;tab[i]!=null;i++)
{ if(tab[i]!=null)
{
plik2.writeObject(tab[i]);
//System.out.println("funkcja dopisz "+tab[i]);
//tab[i].wyswietlWszystko();
plik2.flush();
}
}
}
finally
{
if(plik2!=null)
plik2.close();
}
}
}
Klasa Main
package klasy;
import java.io.File;
import java.io.IOException;
public class main
{
public static void main(String[] args) throws IOException, ClassNotFoundException, NullPointerException
{ String nazwaPliku="E:\\Pliczek.txt";
Towar t1=new Towar("123","nazwa",234,"producent");
Towar t2=new Towar("123","nazwa",234,"producent");
Towar t3=new Towar("1223","nazwa",2334,"producent");
Towar t4=new Towar("2314","nazwa",1234,"producent");
Magazyn m1 = new Magazyn();
Magazyn m2 = new Magazyn();
m1.dodaj(t3);
m1.dodaj(t1);
m1.dodaj(t2);
m1.dodaj(t4);
m1.wyswietl();
m1.dopiszPlik(nazwaPliku);
//m1.odczytajPlik(nazwaPliku);
//m1.wyswietl();
m2.odczytajPlik(nazwaPliku);
m2.wyswietl();
}
}
Problem polega na tym, że funkcja dopiszPlik() zapisuje tablice do pliku, ale funkcja odczytajPlik() nie czyta zawartosci pliku.
Specjalnie utworzyłem nowy obiekt klasy Magazyn (m2) i wywołałem do niego funkcje która ma do niego przypisać zawartość pliku, ale niestety nic nie przypisuje. Co może byc nie tak w tej funkcji?