我正在尝试编写一个文件同步应用程序,该应用程序能够在使用任何兼容文件系统的不同Windows计算机上普遍使用。我需要在文件时间戳在两台计算机之间同步到特定粒度之前进行规范化处理,以便在同步工作完成后,文件在两台独立的计算机上显示为时间戳相同的文件。出于我的目的,我只需要规范化文件时间戳。对于每个要同步的文件,我只需要规范化最后写入时间和创建时间。与Windows兼容的文件系统的文件时间分辨率
MSDN has this to say about the FILETIME structure and its resolution:
并非所有文件系统可以记录的创建和上次访问时间,而不是 所有文件系统记录他们以同样的方式。例如,在NT FAT,创建时间为10毫秒的分辨率,写入时间有 分辨率的2秒,存取时间有1天 (真的,访问日期)的分辨率。在NTFS上,访问时间的分辨率为1 小时。因此,GetFileTime函数可能不会返回使用SetFileTime函数设置的相同文件 时间信息。此外,FAT 在本地时间记录磁盘上的时间。但是,NTFS会在UTC中记录 磁盘上的时间。有关更多信息,请参阅文件时间。
的Windows利用了FAT,NTFS,exFAT的,实时文件系统和裁判 文件系统(最后这些仅支持和可用在 Windows Server 2012中的;的Windows无法从它启动)。
因此,换句话说,我的问题可以概括为这样:
在FAT,NTFS,exFAT的,实时文件系统和裁判的分组,
- 哪一个文件的最后写入时间在Windows中的分辨率最差?
- 哪一个对Windows的文件的创建时间最坏的分辨率是多少?
我已经尝试过搜索,但无法找到这些不同Windows兼容文件系统之间文件时间戳分辨率差异的详细信息。