【发布时间】:2012-05-27 00:26:39
【问题描述】:
在我的 java 项目中,我有几个类/java 文件,但在 Menu 类中,该类存储了所有使用的东西列表。在数据方面,我存储了 6 个列表(2 个 ArrayLists 和 4 个 HashMaps),其中 1 个在 Menu 类中定义,其他在不同的类中。 所以我需要在关闭程序时创建一个 savestate 和一个 loadstate 以恢复之前的状态。所有的列表都是用 Serializable
实现的是否可以保存所有菜单的状态并重新加载,或者我必须单独保存所有列表?将所有内容保存在一个文件中会很棒。
这是我拥有的功能,工作(没有警告/错误)并编译但不创建文件“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
Preferences可能是更好的选择,尽管我们还没有足够的了解来确定。请参阅下面我对 mKorbel 的评论。