标题说明了一切。提到的日期(和其他文件元数据)是否已保存?
它们是文件的一部分还是独立的?如果我有一个文件,修改它以使内容保持不变(删除一个字母,然后将其写回)...更改修改日期。这两个结果文件的内容是否完全相同(二进制相同)?
答案1
这两个时间戳都与文件内容分开。它们与其他元数据一起保存在索引节点(大多数 Unix 文件系统)或 Windows 等效项 – 文件的条目在“主文件表”。一般来说,这取决于所使用的文件系统——FAT 和ext4和文件系统而NTFS的做法则截然不同。
如果至少修改了一个字节,则在关闭文件时会更新 Windows 上的修改时间。只要调用了 WriteFile() 或相关函数,新数据是否相同或不同都无关紧要;新内容甚至可以完全匹配。
当文件在打开进行读写后关闭时,访问时间会更新 - 即使它没有以任何方式被修改。(这不包括元数据读取,因为元数据在文件之外。在 Windows 上,备份程序也可以要求访问时间保持不变。)通常,对于何时更新此时间还有其他限制:例如,只有当旧访问时间早于修改时间时(Linux相对时间),或者只有当旧 atime 距现在超过一个小时(旧 Windows),或者未更新时根本(较新的 Windows)。