Maison > développement back-end > C++ > Puis-je créer une archive ZIP en mémoire à l'aide de MemoryStream sans utiliser FileStream ?

Puis-je créer une archive ZIP en mémoire à l'aide de MemoryStream sans utiliser FileStream ?

Susan Sarandon
Libérer: 2025-01-07 00:18:47
original
572 Les gens l'ont consulté

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

Création d'une archive ZIP en mémoire à l'aide de MemoryStream

En essayant de créer une archive ZIP en mémoire à l'aide d'un MemoryStream, les utilisateurs peuvent rencontrer un scénario dans lequel le fichier d'archive est généré mais ne contient pas le fichier de contenu prévu. Le remplacement du MemoryStream par un FileStream résout le problème. Cependant, est-il possible d'utiliser un MemoryStream pour la création d'archives ZIP sans recourir à un FileStream ?

La solution réside dans la compréhension du fonctionnement interne de ZipArchive. Avant que l'archive puisse être considérée comme complète, certains octets cruciaux, comme les sommes de contrôle, doivent être écrits. Par défaut, ZipArchive ferme le flux pour effectuer cette opération, mais dans le cas d'un MemoryStream, cette action empêche l'utilisation ultérieure du flux.

Pour pallier à cela, le troisième paramètre de ZipArchive peut être fixé à true, ce qui permet l'écriture des derniers octets sans fermer le flux. Le code révisé ci-dessous illustre cette approche :

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);
   }
}
Copier après la connexion

En incorporant cet ajustement, les utilisateurs peuvent créer avec succès des archives ZIP en mémoire à l'aide de MemoryStream sans compromettre l'intégrité ou l'exhaustivité de l'archive.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal