“上次修改日期”和“上次访问日期”保存在哪里?

Roo*_*ook 5 windows-xp

标题说明了一切。提到的日期(和其他文件数据)保存在哪里?

它们是文件的一部分还是分开的?如果我有一个文件,请修改它以使内容保持不变(删除一个字母,然后将其写回)...更改修改日期。关于内容(二进制相同),这两个结果文件是否仍然完全相同?

use*_*686 8

两个时间戳都与文件内容分开。它们与inode(大多数 Unix 文件系统)或 Windows 等效项(“主文件表”中的文件条目)中的其他元数据一起保存。一般来说,这与所使用的文件系统非常相关——FAT 和ext4以及btrfs和 NTFS 的做法非常不同。

如果至少修改了一个字节,则在关闭文件时更新 Windows 上的修改时间。新数据是相同还是不同都没有关系,只要已经调用了WriteFile()或相关函数;新内容甚至可以完全匹配。

在打开文件进行读取或写入后关闭文件时,访问时间会更新 - 即使它没有以任何方式进行修改。(这不包括元数据读取,因为元数据在文件之外。在 Windows 上,备份程序还可以请求 atime 保持不变。)通常对何时更新此时间有额外的限制:例如,只有旧 atime 之前修改时间(Linux的relatime),或者只在旧的atime是一个多小时前,现在(老版本的Windows),或不更新所有(较新的Windows)。