DotNetZip库:从一个ZIP文件读取到另一个ZIP文件

3
使用DotNetZip库(http://dotnetzip.codeplex.com/)是否有一种方法可以在不先将文件提取到磁盘的情况下将文件从一个zip文件移动到另一个zip文件中?也许将其提取到流中,然后从同一流更新到另一个zip中?这些zip文件受密码保护,这些zip文件中的数据由于其许可证而应该保持不变。如果我只是首先提取到磁盘,然后更新其他zip,那么用户有可能拦截这些文件。

你目前尝试了什么?这似乎是一个简单的问题。 - H H
正在处理ZipFile对象,但似乎无法使其正常工作。我能够打开一个zip文件,提取它,然后打开目标文件并更新它,但无法弄清楚如何不提取它而只是在内存中读取文件并将其写入目标文件。我仍在努力解决问题,但想问一下是否有人以前做过这个。 - user441521
我不熟悉dotnetZip,但是ZLib可以让我打开一个读取流和一个写入流,然后只需要使用CopyTo()方法即可。当然,文件将被解压缩/重新压缩并进行解密/加密。你需要密码。 - H H
1个回答

3

是的,您应该能够做类似这样的事情:

var ms = new MemoryStream();

using (ZipFile zip = ZipFile.Read(sourceZipFile))
{
    zip.Extract("NameOfEntryInArchive.doc", ms);
}

ms.Seek(0);

using (ZipFile zip = new ZipFile())
{
    zip.AddEntry("NameOfEntryInArchive.doc", ms);
    zip.Save(zipToCreate);
}

(由于我没有编译的机会,将其视为伪代码)

当然,您还需要添加解密/加密功能,但这些调用同样很简单。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接