以编程方式合并由 DotNetZip 制作的 zip 段

Programmatically merging zip segments made by DotNetZip

我在合并使用 DotNetZip 库制作的 zip 片段时遇到问题。

我正在压缩大文件,生成的文件如下:abc.zip、abc.z01 和 abc.z02。

using (ZipFile zip = new ZipFile())
{
    zip.AddDirectory(fullDir);
    zip.MaxOutputSegmentSize = 65536;
    zip.Save(packageFullName);

    return zip.NumberOfSegmentsForMostRecentSave;
}

在其他服务中,我想下载这些文件并将它们合并到一个 zip 文件中。我通过简单地合并他们的字节数组来做到这一点。很遗憾,我收到错误消息,我创建的存档无效。

我不确定为什么我的方法不对。我发现了这个堆栈问题:https://superuser.com/questions/15935/how-do-i-reassemble-a-zip-file-that-has-been-emailed-in-multiple-parts - 接受的答案也会产生无效的存档。

有人知道如何合并几个 DotNetZip 文件吗?我真的不想将它们提取到内存中并再次打包,但也许这是唯一的方法。

dotnetzip 可以毫无问题地读取 segment zip 文件,你可以参考它的源代码看看它是如何将 segement 文件作为一个 zip 文件处理的,它是一个内部 class 你不能直接使用,但是它可能有线索告诉你怎么做:

http://dotnetzip.codeplex.com/SourceControl/latest#Zip/ZipSegmentedStream.cs