как читать файлы из несжатого zip в С#?

Я создаю приложение для КПК, и мне нужно загрузить/выгрузить множество небольших файлов, и моя идея состоит в том, чтобы собрать их в несжатый zip-файл.

Возникает вопрос: лучше читать эти файлы из архива, не разделяя их? Как я могу это сделать? Или лучше разархивировать их? Поскольку файлы не сжаты, мой простой разум подсказывает, что, возможно, чтение их из zip более или менее эффективно, чем чтение их непосредственно из файловой системы.. .

Спасибо за ваше время!


person Community    schedule 05.11.2008    source источник
comment
Почему несжатый zip? С Уважением   -  person tamberg    schedule 05.11.2008
comment
Я предполагаю, как механизм распределения.   -  person Powerlord    schedule 05.11.2008


Ответы (3)


Поскольку существуют две разные библиотеки с открытым исходным кодом (SharpZipLib и Библиотека DotNetZip) для обработки записи и извлечения файлов из zip-файла, зачем беспокоиться об этом самостоятельно?

person James Curran    schedule 05.11.2008
comment
На самом деле три - zlib (или, если быть точным, порт zlibce) также является вариантом. - person ctacke; 05.11.2008
comment
Если бы это было не приложение для КПК, вы могли бы даже использовать J#: msdn.microsoft .com/en-us/magazine/cc164129.aspx - person Marc Gravell; 05.11.2008
comment
(т. е. библиотеки классов J#, доступ к которым осуществляется из C#) - person Marc Gravell; 05.11.2008

ewww - не используйте J#.

Библиотека DotNetZip, начиная с версии 1.7, работает на .NET Compact Framework 2.0 и выше. Он может обрабатывать чтение или запись сжатых или несжатых файлов в ZIP-архиве. Исходный дистрибутив включает пример приложения CF. Это очень просто.

person Cheeso    schedule 04.01.2009

Звучит так, как будто вы хотите использовать архив для группировки файлов.

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

С точки зрения загрузки файлов это имеет больше смысла: загрузчик может собрать все необходимые файлы и должен будет позаботиться только об одной единственной загрузке. Это уменьшает накладные расходы, а также уменьшает обработку ошибок (если одна загрузка не удалась, нужно ли удалять все файлы этой группы, которые уже были загружены?).

Что касается эффективности чтения из архива по сравнению с чтением напрямую с диска: разница должна быть минимальной. Вам (или вашей zip-библиотеке) нужно один раз проанализировать структуру zip-каталогов, что довольно просто. Остальное — это чтение части файла в память по сравнению с чтением файла в память.

person Treb    schedule 05.11.2008