读取会超出缓冲区错误

时间:2014-01-06 16:57:25

标签: c# filestream buffer-overrun

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

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

我基本上使用相同的代码并将其更改为匹配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。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

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