Heim >Backend-Entwicklung >C++ >Wie kann man mit C# erfolgreich ein In-Memory-ZIP-Archiv erstellen und den Fehler „Ungültige ZIP' vermeiden?
Erstellen eines ZIP-Archivs im Speicher mithilfe von System.IO.Compression: Überwindung des Fehlers „Ungültige ZIP“
Beim Versuch, ein ZIP-Archiv in zu erstellen Beim Erstellen eines Speichers mit einem MemoryStream kann es zu dem Problem kommen, dass das Archiv zwar erstellt wird, aber nicht über den gewünschten Inhalt verfügt. Dieses Problem entsteht dadurch, dass abschließende Bytes, wie z. B. Prüfsummen, in das Archiv geschrieben werden müssen, um es zu vervollständigen.
Um dieses Problem zu beheben, können Sie den folgenden geänderten Code verwenden:
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); } }
Der Hauptunterschied besteht hier im dritten Parameter im ZipArchive-Konstruktor, der auf true gesetzt ist. Dieser Parameter gibt an, dass das ZipArchive entsorgt werden kann, ohne den zugrunde liegenden Stream zu schließen. Dadurch können Sie den MemoryStream nach dem Erstellen des Archivs wiederverwenden.
Durch die Verwendung des geänderten Codes können Sie erfolgreich ein ZIP-Archiv mit den gewünschten Inhalten im Speicher erstellen, auch wenn Sie einen MemoryStream verwenden. Diese Flexibilität ermöglicht es Ihnen, Archive in verschiedenen Szenarien zu bearbeiten, ohne dass eine zwischenzeitliche Dateibearbeitung erforderlich ist.
Das obige ist der detaillierte Inhalt vonWie kann man mit C# erfolgreich ein In-Memory-ZIP-Archiv erstellen und den Fehler „Ungültige ZIP' vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!