


Wie vermeide ich leere Einträge beim Erstellen eines In-Memory-ZIP-Archivs mit MemoryStream?
Jan 07, 2025 am 12:13 AMErstellen eines ZIP-Archivs im Speicher mit MemoryStream: Überwindung des Problems mit leeren Einträgen
Beim Versuch, mit einem MemoryStream ein ZIP-Archiv im Speicher zu erstellen sind Entwickler auf ein eigenartiges Problem gestoßen: Das erstellte Archiv enthält eine leere Datei, obwohl die entsprechende Textdatei geschrieben wurde. Dieses Verhalten wird auf einen fehlenden Schritt im Prozess zurückgeführt.
Um dieses Problem zu beheben, besteht der Schlüssel darin, Dispose für das ZipArchive-Objekt aufzurufen, bevor versucht wird, auf den zugrunde liegenden Stream zuzugreifen. Diese Vorgehensweise ist notwendig, da ZipArchive die letzten Bytes in die Prüfsumme des Archivs schreibt und es so vervollständigt. Wenn wir jedoch möchten, dass der Stream für die weitere Verwendung geöffnet bleibt, müssen wir true als dritten Parameter an ZipArchive übergeben.
Hier ist ein überarbeiteter Codeausschnitt, der diese Lösung enthält:
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); } }
Durch die Befolgung dieses Ansatzes können Entwickler mit einem MemoryStream erfolgreich ein vollständiges ZIP-Archiv im Speicher erstellen, ohne auf das Problem leerer Einträge zu stoßen.
Das obige ist der detaillierte Inhalt vonWie vermeide ich leere Einträge beim Erstellen eines In-Memory-ZIP-Archivs mit MemoryStream?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte

Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert?

GULC: C -Bibliothek von Grund auf neu gebaut

Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die?

Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)?

Wo ist der Rückgabewert der C -Sprachfunktion im Speicher?

eindeutiger Gebrauch und Phrasenfreigabe

Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient?
