Maison >développement back-end >C++ >Comment créer correctement une archive ZIP en mémoire à l'aide de MemoryStream et System.IO.Compression ?
Utilisation de MemoryStream pour créer une archive ZIP en mémoire avec System.IO.Compression
En essayant de créer une archive ZIP à l'aide d'un MemoryStream, vous pouvez rencontrer un problème où l'archive est générée mais le fichier souhaité est manquant. En effet, ZipArchive nécessite l'écriture des derniers octets pour être terminé. Pour résoudre ce problème :
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); } }
Passer "true" comme troisième paramètre à ZipArchive vous permet de continuer à utiliser le flux après avoir appelé Dispose, en garantissant que toutes les informations nécessaires sont écrites dans 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!