如何使用 DotNetZip 压缩 ZipFile?
How to Zip up a ZipFile using DotNetZip?
我如何(或可以)将一个 ZipFile 压缩到另一个 ZipFile 中?
将嵌套的 ZipFile 保存到内存流,然后将其写入另一个 ZipFile 似乎是执行此操作的最佳方法,但是当我使用下面的代码时,嵌套的 ZipFile(一旦我解压了 zip1)是 0KB 大并且我认为要么是空的,要么是损坏的(PeaZip 说它不可读,但 Windows Explorer 显示一个空文件夹)。
如果不先将嵌套的 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");
可能是MemoryStream 的位置在流的末尾。
您可以尝试将其设置为开头:
stream.Position = 0;
这可能有用。
我如何(或可以)将一个 ZipFile 压缩到另一个 ZipFile 中?
将嵌套的 ZipFile 保存到内存流,然后将其写入另一个 ZipFile 似乎是执行此操作的最佳方法,但是当我使用下面的代码时,嵌套的 ZipFile(一旦我解压了 zip1)是 0KB 大并且我认为要么是空的,要么是损坏的(PeaZip 说它不可读,但 Windows Explorer 显示一个空文件夹)。
如果不先将嵌套的 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");
可能是MemoryStream 的位置在流的末尾。 您可以尝试将其设置为开头:
stream.Position = 0;
这可能有用。