当前位置:  开发笔记 > 编程语言 > 正文

StreamReader.Read和StreamReader.ReadBlock之间的区别

如何解决《StreamReader.Read和StreamReader.ReadBlock之间的区别》经验,为你挑选了1个好方法。

文档简单地说ReadBlock是

"阻止版本的阅读"

但是,这是什么意思?

之前有人问过这个问题,但是,是吧?

http://www.pcreview.co.uk/forums/thread-1385785.php

那个回答的人说

基本上,这意味着您可以依赖StreamReader.ReadBlock返回,直到它读取的次数与您要求的一样多,或者它已到达流的末尾.

我是否正确理解这是必需的,因为Read可能无法为您提供所需的一切?那只是因为它返回0并不意味着你到达文件的末尾?

那么这意味着检查返回的字节数以外的其他内容(EndOfStream?)或使用ReadBlock代替?



1> David..:

ReadBlock并不意味着它是线程安全的.如果你使用Reflector来查看StreamReader.ReadBlock(它继承自TextReader.ReadBlock)的实现,它所做的就是多次调用"Read"方法,直到"Read"方法返回0或者我们读取为请求的多个字节.这是必需的,因为"Read"方法不一定会返回您要求的字节数.


啊...... ReadBlock中的'block'一词是指阻塞的动作,而不是下一个'块'的字节.
不要迂腐,但TextReader用于读取字符,而不是字节.字节数可能等于或不等于字符数,具体取决于编码.
啊 - 那是最后一块.读取块,直到它至少有一些东西和ReadBlock阻塞,直到它得到你要求的一切或它到达文件的末尾.无论哪种方式,0表示文件结束.那很好,谢谢.
@JM:返回0始终表示已到达流的末尾,因此Read实际上也会阻塞,直到它收到*某些内容*
推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有