Я хочу смочь смочь считать файлы в zip-файлах так же, как я считал бы файлы в физической папке. Как я могу сделать это, не имея необходимость извлекать файлы?
Прежде всего .NET, хотя он поддерживает сжатые файлы, он не поддерживает файлы ZIP (не уверен насчет .NET v4)
В любом случае я использовал SharpZipLib { {1}} http://www.icsharpcode.net/OpenSource/SharpZipLib/ (внимательно прочтите исключения GPL +)
Эта библиотека позволяет вам пройти через ZipStream и получить доступ к ZipEntry, который дает вам всю информацию о файле.
Имейте в виду, что при сжатии нужных файлов, если вы сжимаете папку, первая запись будет этой папкой. Не проблема, но если вы хотите получить четкий список, заархивируйте его без путей к папкам.
Также поддерживает почтовые индексы с паролем.
Вам нужно будет написать или найти оболочку, которая представляет собой виртуальную файловую систему.
API может быть таким же простым, как единственный общедоступный Stream GetFile (строковый путь)
метод, либо сложным, как полная FS.
Это возможно с использованием любой библиотеки сжатия, которая поддерживает формат файла, который вы хотите использовать.
Я написал простую сжатую VFS с использованием библиотеки Cheeso DotNetZip , и она отлично работает.
Есть некоторые компоненты, которые позволяют просматривать содержимое файла .zip из приложения .NET:
Раньше я использовал #ziplib и он отлично работал для моих не слишком обширных целей.