2008-12-01 51 views
3

我正在使用System.IO.Stream.Read(byte[] buffer, int offset, int count)。是否有替代方法(或設置屬性),以便該方法不會返回,直到讀取所有計數(或達到流結束)?或者我應該這樣做:阻止版本的System.IO.Stream.Read(byte [],int,int)

int n = 0, readCount = 0; 
while ((n = myStream.Read(buffer, readCount, countToRead - readCount)) > 0) 
    readCount += n; 

回答

9

BinaryReader.ReadBytes以所需的方式塊。但是,這不等同於閱讀流的末尾。 (您不想撥打BinarReader.ReadBytes(int.MaxValue) - 它會嘗試創建2GB緩衝區!)

我傾向於使用MemoryStream從未知大小的流中讀取所有數據。有關示例代碼,請參見this related question

相關問題