首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于在写入文件时保护用户数据,您有什么建议的最佳实践?

对于在写入文件时保护用户数据,您有什么建议的最佳实践?
EN

Stack Overflow用户
提问于 2009-07-21 00:07:39
回答 4查看 162关注 0票数 1

假设您有一个程序,比如文本编辑器或字处理器,可以写入用户创建的文件。应采取哪些步骤来保证在面临崩溃、空间不足错误、突然断电、竞争条件等情况下数据丢失或损坏的风险降至最低?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-07-21 00:21:57

我之前写了一个answer来解决类似的问题,同样也适用于这里。具体步骤如下:

使用新的数据节点写入临时文件directory.

  • Perform将临时文件移动到原始文件的备份文件中备份和原始文件的原子交换(在Window中为File.Replace,在Unix中为交换inode)。

  • 备份(现在是原始)文件。
票数 0
EN

Stack Overflow用户

发布于 2009-07-21 00:20:52

保护重要数据的一个很好的经验法则是

从不修改唯一的副本

在文字处理程序和文本编辑器的情况下,我认为创建“卷影副本”(这可能不是技术术语)是标准的,它是进行所有更改的原始文件的副本。您可以定期(或在用户请求时)强制保存,其中包含对原始文件的修改。这样做的好处是,如果在任何时刻出现故障,始终至少有一个有效的数据副本。

真正的目标是实现原子性-操作只能成功或失败,永远不会有不完整的状态。除了“卷影复制”之外,还有许多其他方法来实现原子性,但我相信文本编辑器就是这样做的。

票数 1
EN

Stack Overflow用户

发布于 2009-07-21 00:14:48

使用SQLite

好吧,好吧,使用DB作为文本编辑器是很奇怪的,但是文字处理器有如此多的状态,所以它可能有一定的意义。当然,作为一种适用于多种应用程序的存储格式,它也很有意义。在SQLite维基网站上有一个关于将其用于撤消/重做日志的page

对于文本编辑器,您可以使用数据库所使用的技术:预写日志或回滚日志,以及与磁盘的良好提交同步。或者,您可以存储每个文件的两个版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1156646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档