при использовании библиотек DotNetZip не требуется считывать весь zip-файл в поток памяти. Когда вы создаете экземпляр экземпляра ZipFile, как показано ниже, библиотека читает только из заголовка zip-файла. Заголовки zip-файла содержат такие свойства, как последнее изменение и т. Д. Вот пример открытия zip-файла. Затем библиотека DotNetZip считывает заголовки zip-файлов и создает список всех записей в zip-файле:
с использованием (Ionic.Zip.ZipFile zipFile = Ionic.Zip.ZipFile.Read (this.FileAbsolutePath))
{
...
}
Теперь вам нужно извлечь zip-файлы в поток, в файловую систему и т. Д. В приведенном ниже примере я использую метод доступа к строковым свойствам в zipFile, чтобы получить zip-файл с именем SomeFile.txt. Соответствующий объект ZipEntry затем извлекается в поток памяти.
MemoryStream memStr = new MemoryStream ();
ZipFile [ "somefile.txt"] Extract (memStr). // Response.OutputStream);
Zip-записи должны быть прочитаны в пространстве процессов .NET, чтобы их можно было сдуть, нет способа обойти это, перейдя прямо в файловую систему. Аналогично тому, как будет работать ваш zip-экстрактор оболочки Windows Explorer - расширения оболочки Windows для 7zip или Windows, встроенные в сжатые папки, должны считывать записи в память, а затем записывать их в файловую систему, чтобы вы могли открыть запись.