1

我正在将一个对象写入一个单独的线程中的文件,并且该线程每隔一分钟执行一次。一切正常,但如果系统崩溃(移除电源),则文件(我正在写入对象的文件)大小在下次重新启动时变为零字节。

我的代码是:

FileOutputStream fileOut = new FileOutputStream("/sdcard/vis.ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(/*An object*/);    
out.close();
4

2 回答 2

0

所以你担心以前的数据被破坏并且新的数据还没有保存?您尝试在 tmp 文件中写入外壳,如果您设法关闭它,只需重命名?

于 2012-07-19T06:31:13.753 回答
0

这个想法是使用校验和来确保文件已正确写入,并按照 Whity 的建议使用重命名。

但是,如果您要保存原始类型,则可以使用SharedPreferences,这将避免您的“0 字节”问题。

这个问题会给你一个关于如何预防它的更广泛的想法。

于 2012-07-19T06:57:06.413 回答