2015-07-20 34 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文件系統。