.net 为什么CopyTo会抛出ArgumentOutOfRangeException?
为什么会导致异常?下面的代码工作得很完美,这就是我认为copyto会做的.net 为什么CopyTo会抛出ArgumentOutOfRangeException?,.net,stream,.net,Stream,为什么会导致异常?下面的代码工作得很完美,这就是我认为copyto会做的 using (var mem = new MemoryStream()) { using (var memin = new MemoryStream(v.body)) using (var comp = new BZip2InputStream(memin)) { //comp.CopyTo(mem); //Non-negative number required (System.A
using (var mem = new MemoryStream())
{
using (var memin = new MemoryStream(v.body))
using (var comp = new BZip2InputStream(memin))
{
//comp.CopyTo(mem); //Non-negative number required (System.ArgumentOutOfRangeException)
var buf = new Byte[1024 * 4];
int len=0;
while ((len = comp.Read(buf, 0, buf.Length)) > 0)
{
mem.Write(buf, 0, len);
}
}
这是
BZip2InputStream.Read(byte[]buffer,int offset,int count)中的一个bug
。它返回-1而不是0。我报告
也可通过!=0而不是像问题中的代码那样>0。这是
BZip2InputStream.Read(byte[]buffer,int offset,int count)中的一个错误。
。它返回-1而不是0。我报告
也可通过!=0而不是问题中的代码所做的>0。因为
v.body
的内容有问题,或者BZip2InputStream
期望看到的内容与其实际看到的内容不匹配?异常是从SharpZipLib
引发的。阅读代码并找出原因。@Jon不正确,堆栈跟踪显示它发生在System.IO.MemoryStream.Write InternalCopyTo和CopyTo之后。BZip2InputStream不在堆栈跟踪中。所以凭猜测进行调试是行不通的。您是否介意发布堆栈跟踪和其他相关信息,以便我们停止这样做?因为v.body
的内容有问题,或者BZip2InputStream
期望看到的内容与实际看到的内容不匹配?异常是从SharpZipLib
引发的。阅读代码并找出原因。@Jon不正确,堆栈跟踪显示它发生在System.IO.MemoryStream.Write InternalCopyTo和CopyTo之后。BZip2InputStream不在堆栈跟踪中。所以凭猜测进行调试是行不通的。您介意发布堆栈跟踪和其他相关信息,以便我们可以停止这样做吗?