gpt4 book ai didi

c# - 在 C# 中解压缩 BIG .tar.gz 的最快方法?

转载 作者:太空宇宙 更新时间:2023-11-03 20:06:41 26 4
gpt4 key购买 nike

我有一大堆 .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# 中的单个 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);

关于c# - 在 C# 中解压缩 BIG .tar.gz 的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22949319/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com