使用DotNetZip库(http://dotnetzip.codeplex.com/)是否有一种方法可以在不先将文件提取到磁盘的情况下将文件从一个zip文件移动到另一个zip文件中?也许将其提取到流中,然后从同一流更新到另一个zip中?这些zip文件受密码保护,这些zip文件中的数据由于其许可证而应该保持不变。如果我只是首先提取到磁盘,然后更新其他zip,那么用户有可能拦截这些文件。
是的,您应该能够做类似这样的事情:
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);
}
(由于我没有编译的机会,将其视为伪代码)
当然,您还需要添加解密/加密功能,但这些调用同样很简单。