Verwenden von MemoryStream zum Erstellen eines ZIP-Archivs im Speicher mit System.IO.Compression
Beim Versuch, ein ZIP-Archiv mithilfe eines MemoryStream zu erstellen, Möglicherweise tritt ein Problem auf, bei dem das Archiv generiert wird, die gewünschte Datei jedoch fehlt. Dies liegt daran, dass ZipArchive zum Abschluss das Schreiben der letzten Bytes erfordert. So beheben Sie dieses Problem:
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 Übergabe von „true“ als dritten Parameter an ZipArchive können Sie den Stream nach dem Aufruf von Dispose weiter verwenden und sicherstellen, dass alle erforderlichen Informationen in das Archiv geschrieben werden.
Das obige ist der detaillierte Inhalt vonWie erstellt man mithilfe von MemoryStream und System.IO.Compression ordnungsgemäß ein ZIP-Archiv im Speicher?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!