我试图编写一个文件同步应用程序,可以在不同的Windows机器上使用任何兼容的文件系统通用。 我有一个要求,规范文件的时间戳之前,两台机器之间的同步到一个特定的粒度,以便在同步工作完成后,两个独立的机器上的文件似乎是时间戳相同的。 对于我的目的,我只需要规范化文件时间戳。 对于每个要同步的文件,我只需要规范化最后的写入时间和创build时间。
MSDN有这样的说FILETIME结构和它的解决scheme :
不是所有的文件系统都能logging创build和上次访问时间,并不是所有文件系统都以相同的方式logging它们。 例如,在NT FAT上,创build时间的分辨率为10毫秒,写入时间的分辨率为2秒,访问时间的分辨率为1天(实际上是访问date)。 在NTFS上,访问时间的分辨率为1小时。 因此, GetFileTime函数可能不会使用SetFileTime函数返回相同的文件时间信息集。 此外,FAT在本地时间在磁盘上logging时间。 但是,NTFS以UTClogging磁盘上的时间。 有关更多信息,请参阅文件时间。
根据维基百科 :
Windows使用FAT,NTFS,exFAT,Live文件系统和ReFS文件系统(其中最后一个仅在Windows Server 2012中受支持和可用; Windows无法从其启动)。
换句话说,我的问题可以概括为:
在FAT,NTFS,exFAT,Live File System和ReFS的分组中,
我已经尝试过search,但无法find这些不同Windows兼容文件系统之间的文件时间戳分辨率差异的详细信息。
我在这里找到了我的答案,转到每个文件系统的文章并查找其日期解析 。
FAT8
不记录日期,在Windows中不受支持。
FAT12,FAT16,FAT16B和FAT32
其中一些在Windows中不受支持。
exFAT的
所有记录10毫秒。
NTFS
所有记录均为100 ns。
实时文件系统(UDF)
所有记录1μs。
裁判
无法找到解决方案的细节,但它相当现代,所以我认为大部分最糟糕的情况是在上面,目前没有多少人会使用它。 也许有人能发现这个帖子。
所以,要回答这个问题:
1.哪一个文件的最后写入时间在Windows中的分辨率最差?
2秒,FAT文件系统。
2.在Windows中,哪个文件的创建时间最差?
10毫秒,也是FAT文件系统。