[教程]程序保存数据的防断电处理策略

虽然现代社会,电力供应没有那么紧张,但每年因为线路或计划检修等原因,正常和非断电的情况还是有的。另外,室内电源接触不良,掉落等因素也会出现异常断电的情况。如果在此时,恰好数据写入一半,就可能造成程序数据写入异常,下次程序启动时,如果调用这种数据就可能出现某些非预期的错误。

实际上解决这类问题,有一个简单的策略:

1、将旧文件更名为 a.old

2、将要保存的数据保存为 a

3、删除 a.old

程序启动时,检查是否存在 a.old,如果存在,说明当前文件 a 是有问题的,那么我们需要做的就是:

1、删除当前的 a 文件

2、将 a.old 更名为 a

3、正常加载 a 中的数据

如果不存在 a.old,则说明程序正常保存完成,直接加载 a.old 就可以。

上述策略适合于中小文件的读写,当文件特别大时,完整写入一个拷贝需要消耗太多的资源,这么写显示就不合适了。那么就可以采用版本化更新策略,新数据直接追加到末尾,而不是写入中间位置替换。而写入成功后,修改文件中原记录标记新记录位置跳转,注意这里必需在写入数据完成后Flush缓存中的数据到磁盘中,只有缓存和磁盘数据一致时,后面的标记才有意义。

分享到: