Распаковка файла gz в c#: System.IO.InvalidDataException: «Архивная запись была сжата с использованием неподдерживаемого метода сжатия». - PullRequest
0 голосов
/ 26 апреля 2020

Я следовал рекомендованному Microsoft способу разархивировать файл .gz:

https://docs.microsoft.com/en-us/dotnet/api/system.io.compression.gzipstream?view=netcore-3.1

Я пытаюсь загрузить и проанализировать файлы с CommonCrawl. Я могу успешно загрузить их и разархивировать с помощью 7-zip

Однако в c# я получаю:

System.IO.InvalidDataException: 'Запись архива была сжата с использованием неподдерживаемый метод сжатия. '

public static void Decompress(FileInfo fileToDecompress)
        {
            using (FileStream originalFileStream = fileToDecompress.OpenRead())
            {
                string currentFileName = fileToDecompress.FullName;
                string newFileName = currentFileName.Remove(currentFileName.Length - fileToDecompress.Extension.Length);

                using (FileStream decompressedFileStream = File.Create(newFileName))
                {
                    using (GZipStream decompressionStream = new GZipStream(originalFileStream, CompressionMode.Decompress))
                    {
                        decompressionStream.CopyTo(decompressedFileStream);
                        Console.WriteLine($"Decompressed: {fileToDecompress.Name}");
                    }
                }
            }
        }

Файл оттуда:

https://commoncrawl.s3.amazonaws.com/crawl-data/CC-MAIN-2020-16/segments/1585370490497.6/wet/CC-MAIN-20200328074047-20200328104047-00010.warc.wet.gz

Кто-нибудь знает, что проблема может быть? мне нужна специальная библиотека?

Ответы [ 2 ]

1 голос
/ 29 апреля 2020

Я еще раз взглянул на этот исходный файл, и он, кажется, представляет собой большое количество (52 593) потоков gzip, соединенных вместе. По-видимому, законно в соответствии со спецификацией c, но, похоже, GZipStream справляется не так хорошо. Рад, что у вас все получилось!

1 голос
/ 27 апреля 2020

Я не уверен, в чем проблема, но после прочтения этого поста

Распаковка с использованием GZipStream возвращает только первую строку

Я изменил на SharZipLib ( http://www.icsharpcode.net/opensource/sharpziplib/) и все заработало

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