文件写入,校验数据完整性,一般有什么方法

lnyat 2013-03-20 02:07:17
考虑文件写入过程中,出现程序被意外终止(比如突然断电)的情况,需要校验数据的完整性,一般有什么方法

我想到的方法是:文件中添加一个写入标志位,操作前将标志位修改为写入中,结束后再修改为写入结束

这种方法是否可行,可能会遇到什么问题,是否有更好的方法,希望大家给点建议
...全文
589 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2013-03-20
  • 打赏
  • 举报
回复
MySQL不知道有没有事务,如果有,楼主可以参考其事务功能是怎么实现的,MySQL是开源的。
lnyat 2013-03-20
  • 打赏
  • 举报
回复
引用 9 楼 zhao4zhong1 的回复:
引用 8 楼 lnyat 的回复:引用 5 楼 qq120848369 的回复:记录CRC是最靠谱的. 写入操作比较复杂,文件数据总是被不断更新 将文件放在RamDisk上。
这么说吧,我在做磁盘缓存,网络到本地磁盘的缓存 缓存比较大不太好保存到RamDisk,用RamDisk不如直接用内存缓存
zilaishuichina 2013-03-20
  • 打赏
  • 举报
回复
校验MD5啊
赵4老师 2013-03-20
  • 打赏
  • 举报
回复
引用 8 楼 lnyat 的回复:
引用 5 楼 qq120848369 的回复:记录CRC是最靠谱的. 写入操作比较复杂,文件数据总是被不断更新
将文件放在RamDisk上。
lnyat 2013-03-20
  • 打赏
  • 举报
回复
引用 5 楼 qq120848369 的回复:
记录CRC是最靠谱的.
写入操作比较复杂,文件数据总是被不断更新
  • 打赏
  • 举报
回复
想法可行。 最好用其它校验方法,校验MD5值,或者楼上说的CRC校验等。
lnyat 2013-03-20
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
所谓修改删除文件a某位置的内容,其实是读打开文件a,再将‘a中修改删除位置之前的内容+修改删除的内容+a中修改删除位置之后的内容’保存到文件b,从文件b中读出数据,确认无误后,关闭文件a,删除文件a,将文件b改名为与之前文件a相同的名字,仅此而已。 参考“事务 回滚”
考虑实现代价不可能真这么做 或者这只是个思路?
qq120848369 2013-03-20
  • 打赏
  • 举报
回复
记录CRC是最靠谱的.
starytx 2013-03-20
  • 打赏
  • 举报
回复
写入前记录一下文件大小,最后判断大小是否一致不可以吗?
赵4老师 2013-03-20
  • 打赏
  • 举报
回复
所谓修改删除文件a某位置的内容,其实是读打开文件a,再将‘a中修改删除位置之前的内容+修改删除的内容+a中修改删除位置之后的内容’保存到文件b,从文件b中读出数据,确认无误后,关闭文件a,删除文件a,将文件b改名为与之前文件a相同的名字,仅此而已。 参考“事务 回滚”
Qyee16 2013-03-20
  • 打赏
  • 举报
回复
我感觉,在开始时,结束做做个文件标识:### 文件内容 ###
sduxiaoxiang 2013-03-20
  • 打赏
  • 举报
回复
写完更新标志位

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧