使用MemoryStream 透過System.IO.Compression 在記憶體中建立ZIP 檔案
嘗試使用MemoryStream 建立ZIP 存檔時,您可能會遇到到生成存檔但缺少所需文件的問題。這是因為 ZipArchive 需要寫入最後一個位元組才能完成。要解決此問題:
using (var memoryStream = new MemoryStream()) { using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true)) { var demoFile = archive.CreateEntry("foo.txt"); using (var entryStream = demoFile.Open()) using (var streamWriter = new StreamWriter(entryStream)) { streamWriter.Write("Bar!"); } } using (var fileStream = new FileStream(@"C:\Temp\test.zip", FileMode.Create)) { memoryStream.Seek(0, SeekOrigin.Begin); memoryStream.CopyTo(fileStream); } }
將「true」作為第三個參數傳遞給 ZipArchive 允許您在呼叫 Dispose 後繼續使用流,確保所有必要的資訊都寫入檔案。
以上是如何使用 MemoryStream 和 System.IO. Compression 在記憶體中正確建立 ZIP 檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!