我正在向一个单独的线程中的文件写一个对象,这个线程每隔一分钟执行一次。一切都运行正常,但如果系统崩溃(删除电源),那么文件(我写的对象)大小在下次重启时变为零字节。
我的代码是:
FileOutputStream fileOut = new FileOutputStream("/sdcard/vis.ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(/*An object*/);
out.close();
答案 0 :(得分:0)
所以你担心先前的数据被破坏而新的数据还没有保存? shell尝试在tmp文件中写入,如果你设法关闭它,只需重命名?
答案 1 :(得分:0)
我们的想法是使用校验和来确保文件已正确写入并使用重命名为Whity建议。
但是,如果要保存基本类型,则可以使用SharedPreferences,这将避免出现“0字节”问题。
This question会让您对如何预防它有更广泛的了解。