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