2015-07-20 31 views
2

我正在尝试编写一个文件同步应用程序,该应用程序能够在使用任何兼容文件系统的不同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中记录 磁盘上的时间。有关更多信息,请参阅文件时间。

According to Wikipedia

的Windows利用了FAT,NTFS,exFAT的,实时文件系统和裁判 文件系统(最后这些仅支持和可用在 Windows Server 2012中的;的Windows无法从它启动)。

因此,换句话说,我的问题可以概括为这样:

在FAT,NTFS,exFAT的,实时文件系统和裁判的分组,

  1. 哪一个文件的最后写入时间在Windows中的分辨率最差?
  2. 哪一个对Windows的文件的创建时间最坏的分辨率是多少?

我已经尝试过搜索,但无法找到这些不同Windows兼容文件系统之间文件时间戳分辨率差异的详细信息。

回答

3

我找到了我的答案here通过去每个文件系统的文章和查找它的日期分辨率

FAT8

不记录日期和Windows不支持。

FAT12,FAT16,FAT16B和FAT32

有些不支持Windows。

  • 最后修改时间:2秒
  • 创建时间:10毫秒
  • 访问时间:4天
  • 删除时间:2秒

的exFAT

10毫秒的所有记录。

NTFS

100 ns的所有记录。

实时文件系统(UDF)

1μs的所有记录。

裁判

找不到解决的细节,但它很现代,所以我假设大多数的最坏的情况是上面并没有多少人会使用它的时刻。也许有人可以在他们发现的时候修改这篇文章。

因此,要回答的问题:

1.哪一个对Windows的文件的最后写入时间最坏的分辨率是多少?

2秒,在FAT文件系统。

2.哪一个对Windows的文件的创建时间最坏的分辨率是多少?

10毫秒,也FAT文件系统。