Как читать файлы из несжатого ZIP в C#?
Я создаю приложение для КПК, и мне нужно загрузить / загрузить много маленьких файлов, и моя идея состоит в том, чтобы собрать их в несжатый zip-файл.
Вопрос в том, что это хорошая идея, чтобы прочитать эти файлы из почтового индекса, не разделяя их? Как я могу это сделать? Или лучше их распаковать? Поскольку файлы не сжаты, мои простые мысли о том, что, возможно, чтение их из zip-файла более или менее эффективно, чем чтение их непосредственно из файловой системы...
Спасибо за ваше время!
3 ответа
Поскольку есть две разные библиотеки с открытым исходным кодом ( SharpZipLib и DotNetZip Library), предназначенные для записи и извлечения файлов из zip-файла, зачем беспокоиться о том, чтобы сделать это самостоятельно?
Ewww - не используйте J#.
Библиотека DotNetZip, начиная с версии 1.7, работает на.NET Compact Framework 2.0 и более поздних версиях. Он может обрабатывать чтение или запись сжатых или несжатых файлов в архиве ZIP. Исходный дистрибутив включает пример приложения CF. Это действительно просто.
Звучит так, как будто вы хотите использовать архив для группировки ваших файлов.
С точки зрения чтения файлов, разница в том, обрабатываются ли файлы так или иначе, не имеет большого значения. Вы должны были бы реализовать способность читать файлы почтового индекса, все же. Даже если вы используете библиотеку, как предложил Джеймс Керран, это означает дополнительную работу, которая может означать дополнительные источники ошибок.
С точки зрения загрузки файлов это имеет больше смысла: загрузчик может собрать все необходимые файлы и должен будет позаботиться только об одной загрузке. Это уменьшает накладные расходы, а также обработку ошибок (если одна загрузка не удалась, нужно ли удалять все файлы этой группы, уже загруженные?).
Что касается эффективности чтения их из архива по сравнению с чтением их непосредственно с диска: разница должна быть минимальной. Вам (или вашей zip-библиотеке) нужно один раз проанализировать структуру zip-каталогов, что довольно просто. Остальное - чтение части файла в память или чтение файла в память.