ホームページ >バックエンド開発 >C++ >MemoryStream と System.IO.Compression を使用してメモリ内に ZIP アーカイブを適切に作成する方法

MemoryStream と System.IO.Compression を使用してメモリ内に ZIP アーカイブを適切に作成する方法

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-07 00:30:39657ブラウズ

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

ZipArchive の 3 番目のパラメーターとして「true」を渡すと、Dispose を呼び出した後もストリームの使用を継続でき、必要な情報がすべてアーカイブに書き込まれるようになります。

以上がMemoryStream と System.IO.Compression を使用してメモリ内に ZIP アーカイブを適切に作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。