2

我已按照 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

有谁知道是什么问题?我需要一个特殊的图书馆吗?

4

2 回答 2

3

我不确定问题是什么,但在阅读了这篇文章之后

使用 GZipStream 解压只返回第一行

我改为 SharZipLib ( http://www.icsharpcode.net/opensource/sharpziplib/ ) 并且它工作

于 2020-04-27T10:57:50.953 回答
1

我再次查看了那个源文件,它似乎是大量 (52,593) 个 gzip 流连接在一起。根据规范显然是合法的,但 GZipStream 似乎不能很好地处理。真高兴你做到了!

于 2020-04-28T22:31:13.110 回答