我正在使用System.IO.Stream.Read(byte[] buffer, int offset, int count)
。是否有替代该方法(或要设置的属性),以便在读取所有计数(或达到流的末尾)之前该方法不会返回?或者我应该做这样的事情:
int n = 0, readCount = 0;
while ((n = myStream.Read(buffer, readCount, countToRead - readCount)) > 0)
readCount += n;
答案 0 :(得分:9)
BinaryReader.ReadBytes以所需方式阻止。但是,这并不等同于读到流的末尾。 (你不想打电话给BinarReader.ReadBytes(int.MaxValue)
- 它会尝试创建一个2GB的缓冲区!)
我倾向于使用MemoryStream来读取未知大小的流中的所有数据。有关示例代码,请参阅this related question。