gpt4 book ai didi

c# - 在 C# 中提取 zip 文件时,lastwritetime 正在改变?

转载 作者:太空狗 更新时间:2023-10-29 23:11:01 24 4
gpt4 key购买 nike

我正在使用 Sharpziplib 版本 0.86 来提取一个 zip 文件。它工作正常,但在通过代码提取 winzip 文件时,Lastwritetime 以秒为单位发生变化......

也用过这个 File.SetLastWriteTime(fullPath, theEntry.DateTime);

实际文件上次写入时间:4/8/2010 2:29:03PM使用 winzip 压缩该文件并使用代码提取该文件后,提取的文件 Lastwritetime 更改为 4/8/2010 2:29:04PM...对此有任何修复吗???

最佳答案

我从 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 秒的粒度。

Quick google 发现了这个...

引用“原始 DOS 文件系统只有 32 个字节来表示目录中的一个文件。在 Win32 文件系统 (VFAT) 中更正了非常严格的 8.3 文件名和文件日期的有限粒度(2 秒)。”来自 http://www.xxcopy.com/xxcopy15.htm

Zip 格式在标准时间戳条目中只允许 2 秒粒度。日期和时间以标准 MS-DOS 格式编码。

可以包含一个可选的 NTFS 额外数据字段 (0x000a),它可以包含最后修改时间、最后访问时间和创建时间。 WinZip 似乎没有创建它。如果存在,SharpZip 将使用它,但据我所知,使用 FastZip 创建 zip 时不会创建它。这可能是添加到代码中的有用选项。如果使用 ZipFile,您当然可以手动创建它。

希望对您有所帮助,大卫

关于c# - 在 C# 中提取 zip 文件时,lastwritetime 正在改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4448226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com