假设我们有这样一个代码块:
//Assuming s is a stream:
byte[] data = new byte[1000];
s.Read(data,0,data.Length);
read方法可以读取1到1000个字节的数据,但是不会读取完整个流。
这是一本C#书的说法。
我不明白为什么Read
方法会从流中任意位置开始读取?它难道不应该读取整个流吗?
书中提到的解决方法如下:
//bytesRead will always end up at 1000, unless the stream is itself smaller in length:
int bytesRead = 0;
int chunkSize = 1;
while(bytesRead < data.Length && chunkSize > 0 )
bytesRead += chunkSize = s.Read(data,bytesRead,dataLength-bytesRead);
上面的代码也是本书提供的一种解决方案。我想了解的是Read方法是否开始从头读取并将指定范围内的所有字节写入字节数组。为什么他在s.Read(data,bytesRead,dataLength-bytesRead)
中使用bytesRead
作为起始点呢?
提前感谢。