Ответ 1
В .NET Framework 4.5 теперь существует метод System.IO.Compression.ZipFile.ExtractToDirectory(String, String)
.
У меня исправление. Мне нужно загрузить zip файл из сетевого расположения, а затем распаковать его на локальном компьютере и использовать файлы. Единственное ограничение заключается в том, что я не могу использовать DLL третьей стороны.
В .NET Framework 4.5 теперь существует метод System.IO.Compression.ZipFile.ExtractToDirectory(String, String)
.
Я не уверен, что он все еще доступен в VS2010, но в ранних версиях J # был включен в VS и J # включает класс java.util.zip
в vjslib.dll, и поскольку он является частью VS, это не сторонний DLL, чтобы вы могли сделать это таким образом.
Вот статья CodeProject, в которой показано, как это сделать: Почтовый и Разархивировать из программы С# с использованием J # runtime
Нет никакого "хорошего" способа сделать это. Вы, очевидно, могли бы реализовать алгоритм ZIP самостоятельно, используя общедоступную информацию о структуре и классах файлов ZIP, таких как DeflateStream (хотя даже это может не работать, если оно не сжимается с использованием алгоритма DEFLATE). Существует некоторая информация о возможных альтернативах в этом сообщении в блоге, но короткая версия заключается в том, что вам придется либо использовать стороннюю библиотеку, либо перепишите его самостоятельно.
Если это будет ситуация, когда вы сможете выпустить исходный код с помощью GPL'd, вы можете скопировать-вставить код из проекта, например SharpZipLib в свой собственный, тем самым уклоняясь от необходимости использовать DLL. Кроме того, почему вы не можете использовать сторонние DLL?
Сама среда .NET не поддерживает (в настоящее время) официальную поддержку ZIP файлов. Есть несколько высококачественных сторонних бесплатных библиотек, и J # runtime поддерживает это, как отмечали другие.
Я рекомендую стороннее решение, но если вы абсолютно не можете этого сделать, тогда есть еще один трюк: ZipPackage, который является частью WPF. Он сортирует файлы ZIP (дополненные дополнительными метаданными) и работает достаточно хорошо для чтения большинства ZIP файлов.
Быстрый поиск в Google превратил это. Справочник MSDN класса GZipStream
GZipStream чаще всего используется для сжатия данных WCF. Не используйте это здесь.
Вы можете попробовать эту ZIP-библиотеку для сжатия в файлы: