ZipArchive для чтения из неприемлемого потока без буферизации в памяти - PullRequest
0 голосов
/ 24 февраля 2020

Есть ли способ прочитать zip-файл из сетевого потока без полной буферизации в памяти? Я бы хотел избежать загрузки всего файла до начала обработки его содержимого, чтобы сэкономить время обработки.

Я использую. Net Core 3.1

1 Ответ

0 голосов
/ 24 февраля 2020

Класс ZipArchive, как показано здесь , буферизует поток в память, если он не доступен для поиска. Таким образом, единственный способ избежать буферизации больших zip-файлов в памяти - это сначала загрузить файл в локальную файловую систему и открыть FileStream , который можно искать.

Это потому, что Каталог zip, часть файла, содержащая список всего содержимого и их расположения, находится в конце файла. Таким образом, класс должен прыгать между разными частями zip-файла, чтобы извлечь его содержимое.

zip anatomy

...