Rumah > pembangunan bahagian belakang > C++ > Bolehkah saya Mencipta Arkib ZIP dalam Memori Menggunakan MemoryStream Tanpa Menggunakan FileStream?

Bolehkah saya Mencipta Arkib ZIP dalam Memori Menggunakan MemoryStream Tanpa Menggunakan FileStream?

Susan Sarandon
Lepaskan: 2025-01-07 00:18:47
asal
584 orang telah melayarinya

Can I Create a ZIP Archive in Memory Using MemoryStream Without Using FileStream?

Mencipta Arkib ZIP dalam Memori menggunakan MemoryStream

Semasa cuba mencipta arkib ZIP dalam memori menggunakan MemoryStream, pengguna mungkin menghadapi senario di mana fail arkib dijana tetapi tidak mempunyai fail kandungan yang dijangkakan. Menggantikan MemoryStream dengan FileStream menyelesaikan masalah ini. Walau bagaimanapun, adakah ia boleh digunakan untuk menggunakan MemoryStream untuk penciptaan arkib ZIP tanpa menggunakan FileStream?

Penyelesaian terletak pada memahami cara kerja dalaman ZipArchive. Sebelum arkib boleh dianggap lengkap, bait penting tertentu, seperti checksum, perlu ditulis. Secara lalai, ZipArchive menutup strim untuk melaksanakan operasi ini, tetapi dalam kes MemoryStream, tindakan ini menghalang penggunaan strim berikutnya.

Untuk mengatasinya, parameter ketiga ZipArchive boleh ditetapkan kepada benar, yang membolehkan penulisan bait akhir tanpa menutup strim. Kod yang disemak di bawah menunjukkan pendekatan ini:

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);
   }
}
Salin selepas log masuk

Dengan memasukkan pelarasan ini, pengguna boleh berjaya mencipta arkib ZIP dalam ingatan menggunakan MemoryStream tanpa menjejaskan integriti atau kesempurnaan arkib.

Atas ialah kandungan terperinci Bolehkah saya Mencipta Arkib ZIP dalam Memori Menggunakan MemoryStream Tanpa Menggunakan FileStream?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan