Я пытаюсь программно распаковать zipped файл.
Я пробовал использовать класс System.IO.Compression.GZipStream
в .NET, но когда мое приложение запускается (на самом деле unit test), я получаю это исключение:
System.IO.InvalidDataException: магическое число в заголовке GZip неверно. Убедитесь, что вы проходите поток GZip.
Теперь я понимаю, что файл .zip
не совпадает с файлом .gz
, а GZip
не совпадает с Zip
.
Однако, поскольку я могу извлечь файл вручную, дважды щелкнув по zipped файлу, а затем щелкнув по кнопке "Извлечь все файлы", я думаю, что также должен быть способ сделать это и в коде.
Поэтому я попытался использовать Process.Start()
с указанием пути к заархивированному файлу в качестве ввода. Это заставляет мое приложение открывать окно, отображающее содержимое в сжатом файле. Все это прекрасно, но приложение будет установлено на сервере, где нет никого, чтобы нажать кнопку "Извлечь все файлы".
Итак, как мне получить приложение для извлечения файлов в zipped файлах?
Или есть другой способ сделать это? Я предпочитаю делать это в коде, не загружая сторонние библиотеки или приложения; служба безопасности не слишком задумывается об этом...