我正在编写文件传输应用程序,我需要将文件从NTFS复制到FAT驱动器。从http://support.microsoft.com/kb/127830读到,我知道像#11/29/2004 7:31:06 PM,250ms#这样的时间应该被翻译成#11/29/2004 7:31:08 PM,0ms#when复制到FAT硬盘。然而,实际发生的是文件时间被截断为#11/29/2004 7:31:06 PM,0ms#。
我在这里遗漏了什么吗?什么时候被截断,什么时候被舍入?
非常感谢! CFP
编辑:添加代码示例:
IO.File.GetLastWriteTimeUtc(Source)
我的NTFS-> FAT功能是:
Function NTFSToFATTime(ByVal NTFSTime As Date) As Date
Return (New Date(NTFSTime.Year, NTFSTime.Month, NTFSTime.Day, NTFSTime.Hour, NTFSTime.Minute, NTFSTime.Second).AddSeconds(If(NTFSTime.Millisecond = 0, NTFSTime.Second Mod 2, 2 - (NTFSTime.Second Mod 2))))
End Function
答案 0 :(得分:2)
技术背景:基本上FAT使用2个字节来存储目录条目中创建的文件的时间(小时/分钟/秒)。它使用该字段的低4位表示秒,0-29的值有效,并乘以2得到最终值。因此,必要时,秒数将是偶数。
很奇怪,但我的猜测是文档错误或者没有引用您正在使用的API。你的时间戳刚刚被截断。不确定您用于创建FAT文件的API(可能对查看文档有用)。
答案 1 :(得分:1)
实际上,问题与以错误方式处理文件时间的硬盘驱动器接口(d-link存储托架)有关,即。截断而不是舍入。
因此没有真正的方法可以解决这个问题,但是要及时检查一下。
非常感谢, CFP。