我大约同时通过 Windows 资源管理器(在 Windows Server 2008 R2 上)创建了两个文件。
- 存档文件(创建于 16:42)
- 存档文件(创建于 16:42)
然后我复制存档文件使用复制粘贴来获取第三个文件
- a-副本.xlsx(创建于 16:45)
如果我删除原来的存档文件并重命名a-副本.xlsx到存档文件,我可以看到资源管理器中的创建时间在我面前从16:45变为了16:42,即原来的时间。
有人能告诉我这是否是个问题吗设计特点使用 NTFS,或者为什么会发生这种情况?
笔记:
- 我在朋友的 Windows 7 机器上确认了同样的行为。
- 我尝试通过 cygwin bash shell 执行相同操作,但创建的时间戳仍然跳回到过去。因此我认为这不是 Explorer 的错。
- 如果我只是删除该文件并将其替换为同名的全新文件,我也会看到时间跳回到原始时间。(当新建 > 文件等待我命名时,创建时间显示为最近,而当我以旧文件命名时,创建时间显示为旧。)
提前致谢,
安迪
答案1
这是设计使然。如果使用刚刚删除的文件的名称创建文件,则时间戳、属性和安全性都会延续下去。
原因:许多应用程序在保存时会删除并重新创建,而不是截断现有文件并写入新内容。此功能修复了安全设置和所有内容突然消失(用户意想不到的)行为。
答案2
我在 Windows 7 机器上独立测试并确认了这个问题。然后我在 Linux 机器上执行了同样的测试,没有收到同样的错误。根据我的测试,该错误只发生在基于 Windows 的机器上。由于微软是 NTFS 的创建者,我无法判断这是否是故意的,或者只是没有将此功能添加到基于 Linux 的 NTFS 文件系统中,或者这是否是一个实际的错误。
我猜这是一个 bug。然而令人惊讶的是,如果真是这样,它居然在微软平台上存在了这么久。
答案3
看“文件系统隧道的秘密历史”作者:Raymond Chen (OldNewThing)。Felix Kasza 的评论包含指向本文的无效 URL,其中写道(摘录):
当您使用程序编辑现有文件,然后保存它时,您希望保留原始创建时间戳,因为您正在编辑文件,而不是创建新文件。但在内部,许多程序通过执行保存、删除和重命名操作的组合来保存文件(例如链接文章中列出的操作),如果没有隧道,文件的创建时间似乎会发生变化,即使从最终用户的角度来看,没有创建任何文件。
“链接的文章”是 Microsoft KB 文章 172190,“Windows NT 包含文件系统隧道功能”。它已从 microsoft.com 上消失;这是存档副本。