У меня есть приложение C#, которое мне нужно для многократной записи данных в zip-файл. В настоящее время я использую для этого следующий фрагмент кода, который вызывается в моем приложении несколько раз:
using (FileStream fileStr = new FileStream(fileToOpen, FileMode.Open))
{
using (ZipArchive zipFile = new ZipArchive(fileStr, ZipArchiveMode.Update))
{
ZipArchiveEntry frEntry = zipFile.GetEntry(Path.GetFileName(FlightRecordFilename));
Stream dataStr = frEntry.Open();
using (BinaryWriter bw = new BinaryWriter(dataStr))
{
bw.Seek(0, SeekOrigin.End);
bw.Write(messageData);
bw.Flush();
}
}
}
Меня беспокоит, как производительность этого кода будет со временем, потому что я не знаю что происходит внутри классов. NET, которые использует этот код. По мере того, как сжатый файл становится больше, будет ли снижаться скорость записи в zip-архив? Сообщение, которое я пишу, представляет собой массив байтов, который различается по размеру, но в целом имеет максимальный размер около 1 КБ. Меня не столько беспокоит разница в производительности с учетом размера messageData, сколько общая производительность при увеличении размера zip-файла. Я не знаю, читают ли классы. NET весь zip-файл в память при каждом обновлении или они просто как-то добавляют новую запись данных в запись zip-архива на диске?