如何编写文件然后将其读回以验证其内容,确保您获得磁盘上的内容而不是缓存

Ner*_*ron 5 c++ windows filesystems winapi mfc

我在Windows上使用本机/ C++/Win32/MFC代码通过MFC序列化保存文档文件.我在写入过程中插入了自己的CFile派生类,使我能够在写入数据时访问数据.这允许我在数据输出到文件时计算校验和(或散列等).

文件保存后,我想允许验证文件的选项.我们的想法是重新打开文件并通过它来验证校验和/散列/等.

我想知道,如果可能的话,在刚刚写完文件之后,当我立即读回文件时,操作系统可能会给我不成​​文的数据.在这种情况下,测试并没有真正告诉我该文件在磁盘上看起来不错.

我的担忧有效吗?如果是这样,有什么办法可以避免这个问题吗?

par*_*mar 5

如果您使用的是CFile,则可以调用CFile :: Flush以确保所有内容都写入磁盘.根据文件说明

virtual void Flush( );
Run Code Online (Sandbox Code Playgroud)

强制将文件缓冲区中剩余的任何数据写入文件