0

在 C# 中使用 SharpZipLib,我正在使用:

// ..
ZipEntry entry = new ZipEntry(Path.GetFileName(files[i].fullfilename));
entry.DateTime =files[i].datemodified //has everything including milliseconds
//.. some more code which i'm not writing

zip 文件创建得很好,但是当我使用任何 3rd 方解压缩器解压缩它时,我看到文件在文件的修改日期丢失了毫秒信息(毫秒信息对我来说非常重要)。我看到了 ZipEntry 的代码及其 DateTime 属性: https ://github.com/icharpcode/SharpZipLib/blob/c49a22d70a77819b1dc88309c91e99565aa9099b/src/Zip/ZipEntry.cs#L695

您会看到在 zip 文件中作为此条目的日期时间写入的是: https ://github.com/icsharpcode/SharpZipLib/blob/c49a22d70a77819b1dc88309c91e99565aa9099b/src/Zip/ZipOutputStream.cs#L344 这是ms dos 格式化时间。有人可以帮我告诉我如何写这个,以便最终的压缩文件包含我从文件信息的“LastWriteTime”获得的原始日期时间中的修改日期时间中的所有内容。

谢谢。

4

2 回答 2

0

您可以阅读zip 规范,了解如何将 Unix 额外字段包含在内,并将时间降至秒。我不知道带有毫秒信息的已定义额外字段,因此您必须创建自己的,并编写自己的 zipper 和 unzipper 来处理它。

于 2015-03-27T17:12:49.380 回答
0

存储毫秒信息的唯一方法(我知道)是使用 NTFS 额外字段。但是,您需要学习如何根据 PKWARE 规范编写此字段。并且不能保证第三方解压缩器会支持它(很可能不会)。

于 2015-03-27T17:17:56.383 回答