首頁 >後端開發 >C++ >如何使用 MemoryStream 和 System.IO. Compression 在記憶體中正確建立 ZIP 檔案?

如何使用 MemoryStream 和 System.IO. Compression 在記憶體中正確建立 ZIP 檔案?

Linda Hamilton
Linda Hamilton原創
2025-01-07 00:30:39622瀏覽

How to Properly Create a ZIP Archive in Memory Using MemoryStream and System.IO.Compression?

使用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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn