【问题标题】:DotNetZip Library read from one zip into anotherDotNetZip 库从一个 zip 读取到另一个
【发布时间】:2012-01-29 18:00:10
【问题描述】:

使用 DotNetZip 库 (http://dotnetzip.codeplex.com/) 是否可以将文件从一个 zip 文件移动到另一个文件,而无需先将该文件解压缩到磁盘?也许提取到一个流,然后从同一个流更新到另一个 zip?

这些 zip 文件受密码保护,并且这些 zip 文件中的数据由于其许可证而应保持这种状态。如果我只是先解压缩到磁盘然后更新另一个 zip,那么这些文件就有可能被用户截获。

【问题讨论】:

  • 那么到目前为止,您尝试了什么?似乎是一个简单的问题。
  • 使用 ZipFile 对象,似乎无法让它工作。我可以打开一个 zip 文件,解压缩,然后打开目标文件并更新它,但不知道如何不提取它,而只是读取内存中的文件并将其写入目标。仍在努力,但我想我会问一下,以防以前有人这样做过。
  • 我不熟悉 dotnetZip,但 ZLib 让我可以打开一个 readStream 和一个 writeStream,然后它就是 CopyTo()。当然,该文件将被解压缩/重新压缩和解密/加密。你需要密码。

标签: c# .net zip


【解决方案1】:

是的,你应该可以做类似的事情;

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);
}

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

当然,您必须将解密/加密添加到其中,但这些调用同样直接。

【讨论】:

    猜你喜欢
    • 2017-08-31
    • 2011-01-06
    • 1970-01-01
    • 2013-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    相关资源
    最近更新 更多