为什么Windows将新创建的文件的“创建时间”属性设置为旧时间?

时间:2009-03-19 12:12:29

标签: windows filesystems

尝试这个我发现了一个奇怪的问题:

  1. 删除旧文件。
  2. 创建一个新文件,并将其命名为旧文件。
  3. 然后将新文件的“created time”属性设置为旧文件的“created time”。为什么会这样?怎么样?

3 个答案:

答案 0 :(得分:24)

由于file system tunnelling,正如Raymond Chen所解释的那样:

“为什么存在隧道?

当您使用程序编辑现有文件,然后保存它时,您希望保留原始创建时间戳,因为您正在编辑文件而不是创建新文件。但在内部,许多程序通过执行保存,删除和重命名操作(例如链接文章中列出的操作)的组合来保存文件,并且没有隧道,文件的创建时间似乎会改变,即使从最终用户的观点,没有创建文件。

作为隧道重要性的另一个例子,考虑文件“File with long name.txt”,其短名称是“FILEWI~1.TXT”。您将此文件加载到一个不支持长文件名的程序中并保存它。它删除旧的“FILEWI~1.TXT”并创建一个具有相同名称的新文件。如果没有隧道,文件的关联长名称将丢失。而不是一个友好的长名称,文件名被破坏成了波浪形的标记。不好。“

答案 1 :(得分:0)

NT文件系统在您认为时不会删除文件。删除NT文件系统上的文件时,操作系统只会将文件占用的磁盘空间标记为可用。在将另一个文件写入磁盘上的该位置之前,不会真正删除该文件。

至于为什么Windows认为它是完全相同的文件我认为这是因为当你删除它时文件是空的,所以在同一个位置创建一个具有相同名称和相同位置的新文件(空)内容使Win​​dows认为它实际上是同一个文件。我认为这是一个错误。

作为旁注,Windows以这种方式处理文件删除的事实是您能够使用文件恢复实用程序来恢复已删除文件的原因。

答案 2 :(得分:0)

您可以使用此命令手动更新创建时间:

powershell (ls YourFile.txt).CreationTime = Get-Date

...并在批处理文件中相同:

call powershell "(ls YourFile.txt).CreationTime = Get-Date"