我在磁盘上有一些文件,其中包含需要经常更新的关键信息。可以安全地假设只有一个进程可以访问该文件,并且该应用程序可以在Windows和NTFS文件系统上运行。
我的目标是防止程序崩溃,断电等情况下可能的数据损坏(例如,部分写入)。在这个问题上,我与磁盘扇区损坏无关。
这是我目前的方法:
写时:
- 在临时文件中写入新数据。
- 创建凭证文件。 (此文件保证临时文件具有有效的内容。)
- 在目标文件中写入新数据。
- 删除凭证文件。
- 删除临时文件。
阅读时:
- 如果凭证文件存在:
- 读取目标文件。
- 删除临时文件(如果存在)。
问题:
- 使用我目前的方法,如果我只覆盖文件的几个字节,是否由于某些故障而导致其他字节可能错误地更改?
- 使用我当前的方法,是否有必要禁用文件缓存,还是在断电的情况下Windows可靠地恢复缓存?
- 是否通过使用一些有关Windows或NTFS如何工作的知识来提供一种更快的方法?如果是这样,我将对FAT文件系统是否有任何差异感兴趣。
我知道Win32中的事务性NTFS API,但是由于它已被弃用,我不想使用它。