Maison > développement back-end > C++ > Comment créer avec succès une archive ZIP en mémoire à l'aide de C# et éviter l'erreur « ZIP invalide » ?

Comment créer avec succès une archive ZIP en mémoire à l'aide de C# et éviter l'erreur « ZIP invalide » ?

Barbara Streisand
Libérer: 2025-01-07 00:33:46
original
228 Les gens l'ont consulté

How to Successfully Create an In-Memory ZIP Archive Using C# and Avoid the

Création d'une archive ZIP en mémoire à l'aide de System.IO.Compression : surmonter l'erreur ZIP non valide

Lors de la tentative de création d'une archive ZIP dans mémoire à l'aide d'un MemoryStream, vous pouvez rencontrer le problème où l'archive est créée mais n'a pas le contenu souhaité. Ce problème est dû à la nécessité d'écrire les derniers octets, tels que les sommes de contrôle, dans l'archive pour la compléter.

Pour résoudre ce problème, vous pouvez utiliser le code modifié suivant :

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

La principale différence ici réside dans le troisième paramètre du constructeur ZipArchive, qui est défini sur true. Ce paramètre indique que le ZipArchive peut être supprimé sans fermer le flux sous-jacent. Cela vous permet de réutiliser le MemoryStream après avoir créé l'archive.

En utilisant le code modifié, vous pouvez réussir à créer une archive ZIP en mémoire avec le contenu souhaité, même en utilisant un MemoryStream. Cette flexibilité vous permet de manipuler les archives dans divers scénarios sans avoir besoin de manipulation de fichiers intermédiaire.

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