阻止版本的System.IO.Stream.Read(byte [],int,int)

时间:2008-12-01 10:49:46

标签: c# .net

我正在使用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;

1 个答案:

答案 0 :(得分:9)

BinaryReader.ReadBytes以所需方式阻止。但是,这并不等同于读到流的末尾。 (你不想打电话给BinarReader.ReadBytes(int.MaxValue) - 它会尝试创建一个2GB的缓冲区!)

我倾向于使用MemoryStream来读取未知大小的流中的所有数据。有关示例代码,请参阅this related question