Vb.net DeflateStream在解压缩数据时重复字节
我遇到了DeflateStream的一个问题——一些数据被反复写入,直到最后 代码如下:Vb.net DeflateStream在解压缩数据时重复字节,vb.net,deflatestream,Vb.net,Deflatestream,我遇到了DeflateStream的一个问题——一些数据被反复写入,直到最后 代码如下: Dim bytesin As Byte() = ... ' An array of compressed bytes Dim bytesout As Byte() Dim count As Integer Using ms As New MemoryStream(bytesin) Using ds As New Compression.DeflateStream(ms, Compression.C
Dim bytesin As Byte() = ... ' An array of compressed bytes
Dim bytesout As Byte()
Dim count As Integer
Using ms As New MemoryStream(bytesin)
Using ds As New Compression.DeflateStream(ms, Compression.CompressionMode.Decompress)
Using outputStream As New MemoryStream()
Dim buffer As Byte() = New Byte(1024) {}
While InlineAssignHelper(count, ds.Read(buffer, 0, buffer.Length)) > 0
outputStream.Write(buffer, 0, count)
End While
bytesout = outputStream.ToArray
End Using
End Using
End Using
Dim fs As FileStream = File.OpenWrite("fws.swf")
fs.Write(bytesout, 0, bytesout.Length)
fs.Flush()
fs.Close()
Private Function InlineAssignHelper(Of T)(ByRef target As T, ByVal value As T) As T
target = value
Return value
End Function
你怎么解释这个
更新
我试过使用Ionic.Zlib.ZlibStream和Ionic.Zlib.DeflateStream,得到了同样奇怪的结果。可能不是您提到的问题的原因,但是第二个“ds.read(buffer,0,buffer.Length)”读取的数据是否丢失了?我纠正了错误输入-这是在多次代码更改后发生的。但这并不能解决问题。无论如何,谢谢你。我不确定InlineAssignHelper为什么会这样做,但我猜循环中最后一次读取的缓冲区没有被清除,而你正在写入剩余的字节。
InlineAssignHelper()
是一个帮助函数,它提供了一个与if((myvar=(testme))>0
C#语法等价的函数<代码>缓冲区的大小为1024字节;为什么它以随机值重复?这就是问题所在!:)更改缓冲区
大小时,重复显示在相同的文件偏移量处。