Как распаковать zip-файл c # - PullRequest
6 голосов
/ 20 ноября 2011

Я хочу извлечь zip-файл программно.

Я искал в Google, но не нашел его. Я использую этот код, но я получаю эту ошибку

Магическое число в заголовке GZip неверно. Убедитесь, что вы передавая поток GZip.

Код:

    public static void Decompress(FileInfo fi)
    {
        using (FileStream inFile = fi.OpenRead())
        {
            string curFile = fi.FullName;
            string origName = curFile.Remove(curFile.Length - fi.Extension.Length);
            using (FileStream outFile = File.Create(origName))
            {
                using (GZipStream Decompress = new GZipStream(inFile,
                        CompressionMode.Decompress))
                {
                    byte[] buffer = new byte[4096];
                    int numRead;
                    while ((numRead = Decompress.Read(buffer, 0, buffer.Length)) != 0)
                    {
                        outFile.Write(buffer, 0, numRead);
                    }
                    Console.WriteLine("Decompressed: {0}", fi.Name);

                }
            }
        }
    }

Буду очень признателен, если кто-нибудь сможет мне помочь.

Заранее спасибо.

1 Ответ

11 голосов
/ 20 ноября 2011

Ошибка предполагает, что вы не открываете файл GZip .Библиотека GZip не может открывать стандартные ZIP-архивы.

См. Формат GZip в Википедии

Вы можете использовать DotNetZip для открытия / чтения / записи стандартного zip-архива.архивы и даже писать зашифрованные, защищенные паролем почтовые индексы.Это также на nuget .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...