в моем проекте java У меня есть несколько классов/java-файлов, но находится в классе меню, в котором хранятся все списки используемого материала. В терминах данных я храню 6 списков (2 списка массивов и 4 хэш-карты), которые 1 определены в классе меню, а другие - в разных классах. Так что мне нужно создать savestate и loadstate, когда я закрою программу для восстановления предыдущего состояния. Все списки реализованы с помощью SerializableJava Сохранение и загрузка состояния программы
Можно ли сохранить все состояние меню и перезагрузить его, или я должен сохранить все списки отдельно? Сохранить все в одном файле было бы здорово.
Вот функция, которую я имею, работает (нет предупреждений/ошибок) и компилирует, но не создает файл «datafiles».
Любые идеи?
private void MenuSave(){
String wd = System.getProperty("user.dir");
JFileChooser fc = new JFileChooser(wd);
int rc = fc.showDialog(null, "Select Data File Location to Save");
if (rc == JFileChooser.APPROVE_OPTION)
{
File file = fc.getSelectedFile();
String filename = file.getAbsolutePath();
savestate(lf, lc, lv, lcl,filename);}
}
public void savestate(Cars la, Bikes l2, Motos l3, Planes l4, People n1, Food n2, String filename){
int i;
File out = new File(filename);
ObjectOutputStream output = null;
try{
output = new ObjectOutputStream(new FileOutputStream(filename));
for(Car c : la.getCars().values()){
output.writeObject(c);
}
for(Bike b : l2.getBikes().values()){
output.writeObject(b);
}
for(Moto m : l3.getMotos().values()){
output.writeObject(m);
}
for(i=0;i<n1.size();i++)
{output.writeObject(n1.get(i)));
}
for(i=0;i<n2.size();i++)
{output.writeObject(n2.get(i)));
}
}catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} finally {
try {
if (output != null) {
output.flush();
output.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
Вы можете посыпать код с Println заявления, чтобы увидеть, какой код будет вызван, и что состояние переменных в моменты из этих вызовов. –
Почему бы не использовать 'java.util.Preferences'? – trashgod
@trashgod «Предпочтения» могут быть лучшим вариантом, хотя мы пока не знаем достаточно, чтобы точно определить. Смотрите мой комментарий к mKorbel ниже. –