0

我不知道我在这里做错了什么。我的代码在第一次通过时按预期工作,但在第二次通过时它不会运行并抛出一个异常,只是说“读取将超出缓冲区%”

我收集我的缓冲区做错了,它不喜欢我覆盖它?

我有基本相同的代码并将其更改为匹配 msdn 示例,但没有乐趣..

using (Stream stream = new FileStream(path, FileMode.Open, FileAccess.Read))
{
    byte[] buffer = new byte[1024];

    int bytesRead = 0;
    long bytesToRead = stream.Length;

    while (bytesToRead > 0)
    {               
        int n = stream.Read (buffer, bytesRead, 1024);
        if (n == 0) break;

        //do work on buffer...

        bytesRead += n;
        bytesToRead -= n;
    }
}   

在 .Net 2.0 Mono 中工作。

4

2 回答 2

3

Stream.Read - 第二个参数在缓冲区中偏移,在您的情况下应该为 0。

于 2014-01-06T17:01:27.637 回答
0

读取参数用于缓冲区信息,您将缓冲区中的数据从偏移量存储到偏移量+nLength 以推进您的文件集stream.Position = bytesRead;

于 2016-02-08T08:59:36.247 回答