使用DotNetZip Library(http://dotnetzip.codeplex.com/)是否有辦法將文件從一個zip文件移動到另一個文件而不必先將文件解壓到磁盤?也許提取到一個流,然後從同一個流更新到另一個壓縮?DotNetZip Library從一個zip文件讀入另一個文件
zip文件受密碼保護,這些zip文件中的數據由於其許可證而保留。如果我只是簡單地提取到磁盤,然後更新另一個zip文件,那麼這些文件可能會被用戶攔截。
使用DotNetZip Library(http://dotnetzip.codeplex.com/)是否有辦法將文件從一個zip文件移動到另一個文件而不必先將文件解壓到磁盤?也許提取到一個流,然後從同一個流更新到另一個壓縮?DotNetZip Library從一個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);
}
(把它看作是僞代碼,因爲我沒有機會編譯)
當然你有你的加密/解密補充,但這些電話也同樣直截了當。
忘記MemoryStream。像魅力一樣工作,謝謝。 – user441521 2012-01-29 19:44:49
那麼你到目前爲止嘗試過什麼?似乎是一個簡單的問題。 – 2012-01-29 18:04:55
使用ZipFile對象,似乎無法使其工作。我可以打開一個zip文件,將其解壓縮,然後打開目標文件並進行更新,但無法弄清楚如何解壓縮文件,而只是讀取內存中的文件並將其寫入目標文件。仍然堵塞,但認爲我會問,以防有人以前這樣做過。 – user441521 2012-01-29 18:10:00
我並不熟悉dotnetZip,但ZLib允許我打開一個readStream和一個writeStream,然後它只是CopyTo()。當然,該文件將被解壓縮/重新壓縮和解密/加密。你需要密碼。 – 2012-01-29 18:16:19