2012-01-29 113 views
3

使用DotNetZip Library(http://dotnetzip.codeplex.com/)是否有办法将文件从一个zip文件移动到另一个文件而不必先将文件解压到磁盘?也许提取到一个流,然后从同一个流更新到另一个压缩?DotNetZip Library从一个zip文件读入另一个文件

zip文件受密码保护,这些zip文件中的数据由于其许可证而保留。如果我只是简单地提取到磁盘,然后更新另一个zip文件,那么这些文件可能会被用户拦截。

+0

那么你到目前为止尝试过什么?似乎是一个简单的问题。 – 2012-01-29 18:04:55

+0

使用ZipFile对象,似乎无法使其工作。我可以打开一个zip文件,将其解压缩,然后打开目标文件并进行更新,但无法弄清楚如何解压缩文件,而只是读取内存中的文件并将其写入目标文件。仍然堵塞,但认为我会问,以防有人以前这样做过。 – user441521 2012-01-29 18:10:00

+0

我并不熟悉dotnetZip,但ZLib允许我打开一个readStream和一个writeStream,然后它只是CopyTo()。当然,该文件将被解压缩/重新压缩和解密/加密。你需要密码。 – 2012-01-29 18:16:19

回答

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

(把它看作是伪代码,因为我没有机会编译)

当然你有你的加密/解密补充,但这些电话也同样直截了当。

+0

忘记MemoryStream。像魅力一样工作,谢谢。 – user441521 2012-01-29 19:44:49

相关问题