【发布时间】:2021-04-28 02:55:14
【问题描述】:
我应该遵循什么模式来正确处理在 Java 中的某些数据序列化过程中软件关闭的风险?
假设我有一些要更新的数据文件。如果应用程序在文件被覆盖时关闭,是否有可能所有数据都丢失,或者 Java 是否有防止这种情况发生的机制?
我想确保我的文件永远不会处于损坏状态。
【问题讨论】:
-
您可以写入一个新文件,并在文件写入成功后重命名。
-
我认为 100% 确定的唯一方法是在写入新文件之前备份您的文件,然后在完成后删除备份。如果备份存在,则在“重新启动”时询问用户是否要继续使用或从备份中恢复。
-
我就是这么做的。
-
您是在尝试防止数据在 SIGINT 事件期间被损坏(如 Linux 终端中的 ctrl+c),还是您在尝试处理意外关机?
-
意外关机,但结果不是一样/不同的原因吗?