3

好的,我有一个奇怪的时刻试图获取 USB 驱动器中文档的文件修改时间。通常,我认为将文件复制到 USB 驱动器时,文件修改时间不会改变。但是,当我将任何文件复制到 USB 驱动器时,我发现文件修改时间增加了两倍。

然而,在研究中,我发现其他人在网上遇到了这个问题,但我还没有看到任何答案,除了维基百科上的这篇文章,它说一些关于 FAT 分区上碎片文件增加的读写时间并且没有为我澄清事情.

我无法验证是否所有文件都会发生这种情况。但是,我想知道的是当文件被复制到 USB 驱动器时修改时间到底发生了什么的任何官方来源。是否建议我自己修改代码中的文件修改时间?即减去两秒

4

3 回答 3

14

从 NTFS 复制到 FAT 时时间戳更改

将文件写入驱动器时,FAT 驱动器上的文件时间戳会四舍五入到最接近的两秒(偶数)。将文件写入驱动器时,NTFS 驱动器上的文件时间戳会四舍五入到最接近的 100 纳秒。因此,FAT 驱动器上的文件时间戳总是以偶数秒结束,而 NTFS 驱动器上的文件时间戳可以以偶数或奇数秒结束。

当文件从 NTFS 驱动器复制到 FAT 驱动器时,必须进行一些文件时间戳舍入;文件时间戳向上舍入到下一个偶数秒。

于 2012-07-18T17:57:01.513 回答
3

这不太可能与 USB 有关,但很可能与 FAT 文件系统有关(其最后修改时间戳的粒度为 2 秒)。

您是否确认它实际上将此时间戳增加了 2 秒,或者您是否在文件创建后非常快速地复制到外部驱动器?

于 2012-07-18T17:34:35.417 回答
0

我不知道这是否是一个通用的解决方案,但我解决了我的问题如下:

  1. 首先,我会获取并存储最后修改的时间,并检查它是否以奇数结尾。如果是,我将其更改为偶数,即在 NTFS 磁盘上将其加一

  2. 我将它复制到 USB 驱动器并将最后修改时间设置为上面得到的日期时间(这是偶数)。

于 2012-07-18T20:11:07.993 回答