我从 Sharpziplib 论坛得到了这个回复
你好
这似乎是一个 WinZip 错误。我以前没有注意到这一点。
我做了这个测试:
1) 使用 WinZip 将文件添加到 zip。在 WinZip 中单击属性和详细信息。查看详细信息列表并找到文件时间戳。
2) 使用 SharpZipLib 创建具有相同输入文件的类似 zip 文件。在 Winzip 中打开结果并查看文件时间戳的属性 > 详细信息。
我的输入文件的修改时间戳(文件属性)为 2010-12-14 15:51:28,在我的测试中,SharpZipLib 将其正确存储在 zip 中,而 WinZip 将其存储为 2010-12-14 15:51:30
换句话说,WinZip 在将其放入 zip 时增加了 2 秒。解压后(使用 WinZip 或 SharpZip),修改后的现在是 15:51:30,而不是原来的 15:51:28。
令人惊讶的是,WinZip 中如此明显的错误竟然这么长时间都没有被报告和修复。如果您有付费版本,您当然应该向他们提出错误错误。
我只记得旧的 8.3 文件系统时间戳中大约 2 秒的粒度。
快速谷歌发现这个......
引用“原始 DOS 文件系统只有 32 个字节来表示目录中的文件。在 Win32 文件系统 (VFAT) 中更正了非常严格的 8.3 文件名和文件日期的有限粒度(2 秒)。” 来自http://www.xxcopy.com/xxcopy15.htm
Zip 格式仅允许标准时间戳条目中的 2 秒粒度。日期和时间以标准 MS-DOS 格式编码。
可以包含一个可选的 NTFS 额外数据字段 (0x000a),它可以保存上次修改时间、上次访问时间和创建时间。WinZip 似乎没有创建它。SharpZip 将使用它(如果存在),但据我所知,使用 FastZip 创建 zip 时不会创建它。这可能是添加到代码中的有用选项。如果使用 ZipFile,您当然可以手动创建它。
希望这会有所帮助,大卫