【发布时间】:2017-05-17 20:39:54
【问题描述】:
我正在编写一个小程序来帮助规划未来的锻炼。我快完成了,但是保存和加载给我带来了一些麻烦。该程序使用“ride”(自定义类)对象的列表,这些对象具有许多特性(如 Dat,然后是一些 int 和 doubles)
现在,我有两个方法,一个“saver”和一个“loader”:
public void saver() {
try{ // Catch errors in I/O if necessary.
// Open a file to write to, named SavedObj.sav.
FileOutputStream saveFile=new FileOutputStream("SaveObj.sav");
// Create an ObjectOutputStream to put objects into save file.
ObjectOutputStream save = new ObjectOutputStream(saveFile);
// Now we do the save.
for (int x = 0; x < rides.size(); x++) {
save.writeObject(rides.get(x).getDate());
save.writeObject(rides.get(x).getMinutes());
save.writeObject(0);
save.writeObject(rides.get(x).getIF());
save.writeObject(rides.get(x).getTss());
}
// Close the file.
save.close(); // This also closes saveFile.
}
catch(Exception exc){
exc.printStackTrace(); // If there was an error, print the info.
}
}
public void loader() {
try{
// Open file to read from, named SavedObj.sav.
FileInputStream saveFile = new FileInputStream("SaveObj.sav");
// Create an ObjectInputStream to get objects from save file.
ObjectInputStream save = new ObjectInputStream(saveFile);
Ride worker;
while(save.available() > 0) {
worker = new Ride((Date)save.readObject(), (int)save.readObject(), (double)save.readObject(), (double)save.readObject(), (int)save.readObject());
addRide(worker.getDate(), worker.getMinutes(), 0, worker.getIF(), worker.getTss());
}
// Close the file.
save.close(); // This also closes saveFile.
}
catch(Exception exc){
exc.printStackTrace(); // If there was an error, print the info.
}
}
当我运行程序时,“保存”和“加载”都不会返回任何错误。 .sav 文件在不存在时创建,并在每次执行程序时进行编辑。然而,该程序永远不会从以前的会话中恢复数据。如果需要更多信息,请告诉我。 提前感谢您的帮助!
【问题讨论】:
-
你的 .sav 文件有内容吗?
-
在
while(save.available() > 0){的下面的loader中添加断点怎么样?您的代码是否符合以worker =开头的行?如果是这样,这里发生了什么? -
保存文件中确实有“东西”。但是,当我更新程序时,它似乎没有改变。我在加载器中添加了一个 system.out.print 并且它永远不会输出。
标签: java save fileinputstream fileoutputstream