如何使用DotNetZip压缩ZipFile?

时间:2015-07-27 04:36:23

标签: c# .net dotnetzip

我如何(或可以)在另一个ZipFile中压缩一个ZipFile?

将嵌套的ZipFile保存到内存流然后写入其他ZipFile似乎是最好的方法,但是当我使用嵌套的ZipFile下面的代码(一旦我解压缩zip1)是0KB大我相信是空的还是腐败的(PeaZip说它不可读,但Windows资源管理器显示一个空文件夹)。

如果不首先将嵌套的ZipFile写入磁盘然后再将其添加到zip1中,这是否可行?

        ZipFile zip1 = new ZipFile()
        {
            ParallelDeflateThreshold = -1
        };
        ZipFile zip2 = new ZipFile()
        {
            ParallelDeflateThreshold = -1
        };

        zip1.AddEntry("test.txt", "hello world");
        zip2.AddEntry("test2.txt", "hello dark world");

        MemoryStream stream = new MemoryStream();
        zip2.Save(stream);
        Console.WriteLine(Encoding.ASCII.GetString(stream.ToArray()));
        zip1.AddEntry("test.zip", stream);

        zip2.Dispose();
        zip1.Save("C:/output.zip");

1 个答案:

答案 0 :(得分:4)

可能是MemoryStream的位置在流的末尾。 您可以尝试将其设置为开头:

stream.Position = 0;

这可能有效。