gpt4 book ai didi

Java 保存和加载程序的状态

转载 作者:行者123 更新时间:2023-12-04 05:45:12 25 4
gpt4 key购买 nike

在我的 java 项目中,我有几个类/java 文件,但是在 Menu 类中,它存储了所有使用的东西列表。在数据方面,我存储 6 个列表(2 个 ArrayLists 和 4 个 HashMaps),其中 1 个在 Menu 类中定义,其他在不同的类中。
所以当我关闭程序以恢复以前的状态时,我需要创建一个 savestate 和一个 loadstate 。所有列表都使用 Serializable 实现

是否可以保存所有菜单的状态并重新加载它,或者我必须单独保存所有列表?将所有内容保存在一个文件中会很棒。

这是我拥有的功能,有效(无警告/错误)并编译但不创建文件“数据文件”。

有任何想法吗?

    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();
}
}
}

最佳答案

doesn't creates the file "datafiles".



我敢打赌它确实如此,只是不是您期望找到的地方。不要“把你的文件放在任何地方”,把它们放在一个可读/可写、合乎逻辑和可重现的地方。
String filename = "datafiles";
File out = new File(System.getProperty("user.home"), filename);
// ...
output = new ObjectOutputStream(new FileOutputStream(out));

然后在用户主页中查找 datafiles (为什么它没有文件类型/扩展名?)文件。
  • File constructor that accepts 2 String (parent & name) parameters使用正确的 File操作系统的分隔符。
  • user.homesystem property指向具有读/写访问权限的稳定、可重现的路径。
  • 关于Java 保存和加载程序的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10770777/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com