为什么CopyTo会抛出ArgumentOutOfRangeException?

时间:2012-10-04 23:47:18

标签: .net stream

为什么CopyTo会导致异常?它下面的代码很完美,也是我认为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.ArgumentOutOfRangeException)
        var buf = new Byte[1024 * 4];
        int len=0;
        while ((len = comp.Read(buf, 0, buf.Length)) > 0)
        {
            mem.Write(buf, 0, len);
        }

    }

1 个答案:

答案 0 :(得分:1)

它是BZip2InputStream.Read(byte[] buffer, int offset, int count)中的一个错误。它返回-1而不是0.我报告了the bug

此外,CopyTo会检查通过!= 0而不是> 0作为问题中的代码。