1

有没有人在使用 .NET Deflate Stream 时遇到以下错误?

System.IndexOutOfRangeException:索引超出了数组的范围。
 在 System.IO.Compression.HuffmanTree.CreateTable()
 在 System.IO.Compression.Inflater.DecodeDynamicBlockHeader()
 在 System.IO.Compression.Inflater.Decode()
 在 System.IO.Compression.Inflater.Inflate(Byte[] 字节,Int32 偏移量,Int32 长度)
 在 System.IO.Compression.DeflateStream.Read(字节 [] 数组,Int32 偏移量,Int32 计数)

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

似乎 HuffmanTree.CreateTable 方法异常和例程试图填充超出其限制的数组。

我尝试分配一个两倍于原始大小的数组进行解压,但它仍然会引发错误。

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

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

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

(I have tried DotNetZip which is causing different issues in the 64 bit environment I am working in.)

4

0 回答 0