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

时间:2017-02-22 14:28:56

标签: c# 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文件?我真的不想在内存中提取它们并再次打包,但也许这是唯一的方法。

1 个答案:

答案 0 :(得分:1)

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

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