.NET Deflate Stream错误/错误

时间:2010-08-03 18:50:02

标签: .net deflatestream

使用.NET Deflate Stream时是否有任何人遇到以下错误?

System.IndexOutOfRangeException: Index was outside the bounds of the array.
 at System.IO.Compression.HuffmanTree.CreateTable()
 at System.IO.Compression.Inflater.DecodeDynamicBlockHeader()
 at System.IO.Compression.Inflater.Decode()
 at System.IO.Compression.Inflater.Inflate(Byte[] bytes, Int32 offset, Int32 length)
 at System.IO.Compression.DeflateStream.Read(Byte[] array, Int32 offset, Int32 count)

解压缩从磁盘读取的deflate流时会发生此错误。我正在使用简单的索引文件,其中包含许多小的deflate编码块。这是一个非常罕见的错误,因为只有几十万(或百万)中的一个压缩项遇到此错​​误。

似乎HuffmanTree.CreateTable方法异常并且例程尝试将数组填充超出其限制。

我尝试过分配一个比原始版本大两倍的数组进行解压缩,但它仍然会抛出错误。

解码数据似乎完好无损,但是,例程不断尝试解码并溢出缓冲区。

我想我可以尝试/捕获并检测是否发生此错误然后尝试处理它。

对此问题的任何见解都将不胜感激。

(我尝试过DotNetZip,它在我工作的64位环境中引起了不同的问题。)

0 个答案:

没有答案