Есть ли способ в .Net (C #) извлекать данные из zip-файла без распаковки всего файла?
Просто я, возможно, хочу извлечь данные (файл) с начала zip-файла, очевидно, это зависит от того, сжимает ли алгоритм сжатия файл в детерминированном порядке.
c#
compression
zip
data-compression
AwkwardCoder
источник
источник
Ответы:
DotNetZip - ваш друг.
Так же легко, как:
(вы также можете извлечь в файл или в другое место назначения).
Прочитать оглавление zip-файла так же просто:
Отредактировано для примечания: DotNetZip раньше жил в Codeplex. Codeplex был закрыт. Старый архив все еще доступен на Codeplex . Похоже, код перекочевал на Github:
источник
С .Net Framework 4.5 (с использованием ZipArchive ):
Найдите «myfile» в zip-архиве и распакуйте его.
источник
System.IO.Compression.dll
andSystem.IO.Compression.FileSystem.dll
Что-то вроде этого будет перечислять и извлекать файлы один за другим, если вы хотите использовать SharpZipLib:
На основе этого примера: содержимое внутри zip-файла
источник
Вот как текстовый файл UTF8 можно прочитать из zip-архива в строковую переменную (.NET Framework 4.5 и выше):
источник
Zip-файлы имеют оглавление. Каждая утилита zip должна иметь возможность запрашивать только оглавление. Или вы можете использовать программу командной строки, например 7zip -t, чтобы распечатать оглавление и перенаправить его в текстовый файл.
источник
В таком случае вам нужно будет проанализировать записи локального заголовка zip-архива. Каждый файл, хранящийся в zip-файле, имеет предшествующую запись локального заголовка файла, которая (обычно) содержит достаточно информации для распаковки. Как правило, вы можете выполнить простой анализ таких записей в потоке, выбрать необходимый файл, скопировать заголовок + данные сжатого файла в другой файл и вызовите unzip в этой части (если вы не хотите иметь дело со всем кодом или библиотекой распаковки Zip).
источник