错误场景:
在使用FileStream对象打开一个文件,想读到缓存中。由于缓存大小为1KB,所以需要分次读入。但在使用FIleStream.Read()方法时,
错误代码:
byte[] sendBuf=new byte[m_nBlockSize];
int nRead=readFile.Read(sendBuf, nOffset, m_nBlockSize);
当nOffset=1时,总是直接抛出错误:偏移量和长度超出数组的界限,或者计数大于从索引到源集合结尾处
错误原因:
没有看清楚各个参数的意思。
FileStream
public override int Read( byte[] array, int offset, int count )
其中:
array
类型:array<System..::.Byte>[]()[]
此方法返回时包含指定的字节数组,数组中 offset 和 (offset +count - 1) 之间的值被从当前源中读取的字节替换。
offset
array 中的字节偏移量,将在此处开始读取字节。
count
最多读取的字节数。
刚开始错误的以为,offset是文件流的便宜量,所以导致了此错误。