我不知道我在这里做错了什么。我的代码在第一次传递时按预期工作,但在第二次传递时它不会运行并抛出一个异常,只是说“读取会超出缓冲区%”
我收集我正在做缓冲区的错误,它不喜欢我覆盖它?
我基本上使用相同的代码并将其更改为匹配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。
答案 0 :(得分:3)
Stream.Read - 第二个参数在缓冲区中是偏移量,在你的情况下应为0。
答案 1 :(得分:0)
读取参数用于缓冲区信息,您将缓冲区中的数据从偏移量存储到偏移量+ nLength 要进入文件集 stream.Position = bytesRead;