一、需求
打开文档时定时自动备份,以防止突然掉电导致数据丢失。
二、流程
2.1文件结构
- 目标文件Target。
- 备份文件Backup_X。
2.2打开阶段
- 判断目标文件是否存在,如不存在则跳转第二步新建目标文件,如存在则跳转第三步继续。
- 创建目标文件,跳转第三步。
- 判断备份文件1是否存在,如存在则说明出现掉电未保存情况,提示用户是否恢复文件,跳转第四步。如不存在则新建备份文件1,将目标文件数据写入备份文件1,跳转第五步。
- 若恢复则将备份文件1的内容覆盖至目标文件,之后定时将记录写入备份文件1。若不恢复则将目标文件内的内容覆盖至备份文件1,之后定时将记录写入备份文件1,跳转第五步。
- 此时应处理好目标文件与备份文件1的初始状态,接下来进入定时备份状态。
2.3定时备份阶段
- 定时到达时,将目标文件数据分段进行保存至备份文件1中。
2.4关闭阶段
- 关闭目标文件操作前,保存目标文件数据。
- 将备份文件关闭并删除。
- 关闭应用程序。
三、函数
3.1exists
检查文件是否存在。
函数使用如下:
uint32_t NewFileOpen(char* name)
{
QFile file(name);
if(file.exists())
{
func1();
}
else
{
func2();
}
}
3.2append
拼接备份文件的文件名。
函数使用如下:
QString BackupFileName(name);
BackupFileName.append("-backup");
QFile BackupFile(BackupFileName);
3.3rename
重命名文件名称。
函数使用如下:
BackupFile.rename(BackupFileName);
3.4open
文件打开,如不存在则创建。
函数使用如下:
file.open(QIODevice::ReadWrite|QIODevice::Text);
3.5close
文件关闭。
函数使用如下:
file.close();
四、总结
定时文件的备份思路源于microsoft word,希望封装成模块以方便使用。源码暂无,正在调试。