2012-01-29 182 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

相關問題