Witam, piszę prostą aplikację katalogująca płyty.
Mój problem polega na tym iż strumień ObjectOutputStream nie chce zapisać klasy zawierającej listę obiektów do pliku. Objekty listy jak i sama klasa zawierająca listę są sterylizowane.
klasa Disc:
package data;
import java.io.Serializable;
public class Disc implements Serializable
{
private String name;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
}
klasa Library
package data;
import java.util.List;
import java.util.Iterator;
import java.util.ArrayList;
import java.io.Serializable;
public class Library implements Serializable
{
private static List <Disc> list = new ArrayList <Disc>();
public static void addDisc(Disc disc)
{
list.add(disc);
}
public static void showLibrary()
{
for(Iterator<Disc> iter = list.iterator();iter.hasNext();)
{
System.out.println( iter.next().getName()+"\n");
}
}
}
Klasa Library tworzona jest w metodzie main:
public class Program
{
static ProgramInterface programInterface;
static DataFile data;
static Library library;
public static void main(String[] args)
{
try
{
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
}
catch(ClassNotFoundException Ex)
{
}
catch(InstantiationException IEx)
{
}
catch(IllegalAccessException IIEx)
{
}
catch(UnsupportedLookAndFeelException s)
{
}
library = new Library();
programInterface = new ProgramInterface();
data = new DataFile("data.dat",library);
}
}
Za sterylizowanie obiektu odpowiada klasa DataFile
public class DataFile
{
public static File file;
private static Library library;
public DataFile(String path, Library lib)
{
library = lib;
file = new File(path);
if(file.exists())
{
}
else
{
try
{
file.createNewFile();
}
catch(IOException exception)
{
}
}
}
public static void saveLibrary()
{
try
{
ObjectOutputStream stream = new ObjectOutputStream(new FileOutputStream(file));
stream.writeObject(library);
stream.flush();
stream.close();
}
catch(FileNotFoundException filenotfoundexception)
{
}
catch(IOException ioexception2)
{
}
}
}
Metoda saveLibrary jest wywoływana w zdarzeniu:
public class AddDiscDialogEvent implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
Disc disc = new Disc();
AddDialog dialog;
dialog = (AddDialog)AddDialog.getDialog();
disc.setName(dialog.getDiscName());
Library.addDisc(disc);
DataFile.saveLibrary();
Library.showLibrary();
AddDialog.getDialog().dispose();
}
}
Plik data.dat jest tworzony, ale nie zwiera nic ciekawego. Tzn. nie widać w nim zapisanych stringów.