【问题标题】:Quickest Way To Decompress BIG .tar.gz In C#?在 C# 中解压缩 BIG .tar.gz 的最快方法?
【发布时间】:2014-04-08 22:20:08
【问题描述】:

我有大量 .tar.gz 文件,大小约为 5GB。我注意到.NET GZipStream 实际上陷入了无限循环,试图解压它们。

我找到了一些纯 C# 代码,但这些都与我的文件大小有关。与其他海报 (24GB tar.gz Decompress using sharpziplib) 不同,我在 X64 位机器上将应用程序编译为 64 位 .NET 4.5.1 应用程序。

我注意到 .NET 4.5.1 删除了 2GB 限制.. 但在阅读后发现它非常具有误导性,实际上它似乎删除了无法使用超过 2GB 的对象的所有嵌套部分,但是即使使用relevant option turned on

,字节数组等对象的实际可寻址范围仍为 2GB

有没有人有任何解决方案或者我在 C# 中遇到了限制?我可以从我的应用程序调用 64 位 7ZIP DLL 或调用 7ZIP .exe 并等待它完成(有点麻烦),但必须有更清洁的方法吗?另外我想要最快的解压,最好是纯 C# 代码中的东西,但我目前认为这在 C# 中是不可能的(由于字节数组的可寻址范围的限制)

【问题讨论】:

    标签: c# gzip gzipstream


    【解决方案1】:

    您将无法在 C# 中将结果数据加载到单个 byte[] 中。您仍然会受到数组大小的限制。

    但是,您应该能够通过仅使用流并通过流解压缩来毫无问题地解压这些文件。我对DotNetZip 和大型流非常幸运 - 使用它,您应该能够做到:

    using (System.IO.Stream input = System.IO.File.OpenRead(inputFile))
    using (Stream decompressor= new Ionic.Zlib.GZipStream(input, CompressionMode.Decompress, true))
    using (var output = System.IO.File.Create(outputFile))
        decompressor.CopyTo(output);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-18
      • 2011-10-30
      • 2018-06-26
      • 2021-10-14
      • 2023-03-28
      • 2013-04-27
      • 2011-11-01
      • 1970-01-01
      相关资源
      最近更新 更多