为什么文件在硬重启时损坏?


1

保存文本文件时,请更改内容,再次保存,然后按硬件重新启动按钮,文件很有可能会损坏(!)(所有内容都变为\ 0个字符)。即使我等待几秒钟,关闭文件甚至关闭应用程序,我也可以在使用Windows 7、8.1和10的不同计算机上重现此内容。我在记事本,记事本++,画图,资源管理器中的文件复制和朴素的UWP文件读取/写入应用程序中尝试过。当我第一次看到这种行为时,我感到莫名其妙,并且不明白为什么在2017年突然停电之后,您仍然不能依靠文件被保存。

  • 您是否应该期望文件突然断电而损坏?
  • 您何时以及如何知道文件是否“永久”保存在硬盘驱动器上?
  • 为什么文件仍然会像这样损坏,哪些安全网应防止这种情况发生?
  • 如果有安全网在什么情况下会失效?

我认为使用file_write()操作时实际上并没有将文件写入指定位置,因为其中涉及一些缓存和日志记录,最后操作系统和/或磁盘控制器决定何时完成此操作。但是我认为特别是发明日记来防止这种情况。并且实际的文件写入应该在调用file_flush()或file_close()操作时发生。

更新:Windows中有一个选项->设备管理器->磁盘驱动器-> MyDiskDrive->属性->策略-> [x]在设备上启用写缓存

通过在设备上启用写缓存来提高系统性能,但是断电或设备故障可能会导致数据丢失或损坏

这与上面描述的行为完全匹配,除了即使我禁用写缓存,重新启动干净并再次测试,文件仍然损坏。WTF?


1
NTFS没有数据日记,只有元数据日记。
Daniel B

嗯,你是对的。“ NTFS是日记文件系统...记录卷中元数据的变化。...USN日记...可以在非系统卷上启用或禁用。” en.wikipedia.org/wiki/NTFS#Journaling msdn.microsoft.com/en-us/library/...

Answers:


0

Microsoft工程师Raymond Chen在您要询问的复选框上写了两篇文章:

但是,缓存分为几层,其中一些超出了操作系统的控制范围,以至于在不发出关闭命令的情况下,无法确定是否已写入给定文件。

如果您担心数据的完整性,请购买UPS。这样可以解决您的电源故障问题。


谢谢。我们收到有关Windows Phone设备上“丢失的savegames”的报告,我无法告诉客户购买用于电话的UPS设备...)

@Gerold Meisinger Windows Phone带有电池。他们不需要UPS。我认为没有电源故障的原因。

电池没电或已取出。

是的 在全世界,对于某些人来说,警告不足……
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.