Я создаю zip-файл, используя ZipArchive + FileStream. Когда новый элемент добавляется в zip-файл, я хотел бы сбросить/записать вновь добавленный элемент в нижний zip-поток.
Приведенный ниже код не очищает отдельный элемент почтового индекса. Весь zip записывается в output.zip при удалении FileStream.
var files = Directory.GetFiles("C:\\Temp","*.pdf");
using (var output = new FileStream("c:\\temp\\output.zip", FileMode.Create, FileAccess.Write))
{
using (System.IO.Compression.ZipArchive zip = new ZipArchive(output, ZipArchiveMode.Create, true))
{
foreach (var file in files)
{
using (var internalFile = new FileStream(file, FileMode.Open))
{
var zipItem = zip.CreateEntry(Path.GetFileName(file));
using var entryStream = zipItem.Open();
{
await internalFile.CopyToAsync(entryStream).ConfigureAwait(false);
}
}
await output.FlushAsync();
// after each file flush the output stream.
// expectation at this point, individual zip item will be written to physical file.
// however I don't see the file size changes in windows explorer.
} // put breakpoint here
}
} // The whole output get flush at this point when FileStream is disposed