gpt4 book ai didi

.net - GzipStream (.net 4.0) 4GB 问题

转载 作者:行者123 更新时间:2023-12-05 01:27:08 25 4
gpt4 key购买 nike

我在使用内置的 .net 4.0 Gzip 和 Deflate 类以编程方式解压缩 3GB(未压缩的 7GB)gzip 文件时遇到问题。

我的理解是它们应该都支持超过 4GB 的文件,但它们似乎不起作用。当我使用 WinRAR 手动解压缩有问题的文件,然后使用流阅读器流式传输底层 csv 文件并计算行数时,我得到了预期的结果,大约 7500 万行。但是,当使用 GzipStream 或 DeflateStream 执行此操作时,流读取器会在中途停止(正好在 4GB 标记附近)并报告“流结束”并无错误地结束。使用这些阅读器,我在流结束前只读到大约 3400 万行。

然后我尝试了 .net zip 的最新二进制文件 http://dotnetzip.codeplex.com/它进行到一半并抛出错误。 “目标数组不够长。检查 destIndex 和长度,以及数组的下限。”

我没有创建此文件,但我们以前从未遇到过来自同一来源的较小文件的问题,因此我怀疑是大小问题导致了问题。可能是用于创建此文件的工具不兼容 64 位,但在我对创建者进行 bug 之前,我想确保 gzip 提取器逻辑中的 bug 不在我们这边。

如有任何想法,我们将不胜感激。示例提取代码和测试方法如下:

var msGZ = 0;//gives 34million
var fileName = @"C:\MyFile.csv.gz";
using (System.IO.Stream input = System.IO.File.OpenRead(filename))
using (var gz = new GZipStream(stream, CompressionMode.Decompress))
using (var r = new StreamReader(gz))
{
while (!r.EndOfStream)
{
r.ReadLine();
msGZ++;
}
}



var msDF = 0; //gives 34million
using (System.IO.Stream input = System.IO.File.OpenRead(filename))
using (var df = new DeflateStream(stream, CompressionMode.Decompress))
using (var r = new StreamReader(df))
{
while (!r.EndOfStream)
{
r.ReadLine();
msDF++;
}
}



var csvCount = 0;//roughly 75million lines

using (var ms = System.IO.File.OpenRead("UncompressedBYWinRAR.csv"))
{
var r = new StreamReader(ms);
while (!r.EndOfStream)
{
r.ReadLine();
csvCount++;
}
}




var zipNet = 0;

//Zip.Net throws this error half way through at around line 34million
//"Destination array was not long enough. Check destIndex and length, and the array's lower bounds."

using (System.IO.Stream input = System.IO.File.OpenRead(filename))
using (Stream decompressor = new Ionic.Zlib.GZipStream(input, Ionic.Zlib.CompressionMode.Decompress, true))
using (var r = new StreamReader(decompressor))
{
while (!r.EndOfStream)
{
r.ReadLine();
zipNet++;
}
}

最佳答案

使用 SharpZip 中的 GZipInputStream 代替 Io.GZipStream 提供了解决方案。

关于.net - GzipStream (.net 4.0) 4GB 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5515339/

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