首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Read()和ReadBlock()对TextReader的调用有什么区别?

Read()和ReadBlock()对TextReader的调用有什么区别?
EN

Stack Overflow用户
提问于 2012-05-08 11:19:10
回答 1查看 5.7K关注 0票数 6

标题或多或少地说明了一切。通话记录如下:

这里 for TextReader.Read Method (Char[], Int32, Int32)

这里用于具有相同参数类型的TextReader.ReadBlock()

我想提取字节数组的一部分,为此,我为其组成了一个MemoryStream,我打算用这样的StreamReader来读取该数组:

代码语言:javascript
复制
    StreamReader r = new StreamReader(new MemoryStream(rawData, 0, 184, false, false));
    r.Read.....

我该用哪一种?其中一个是更快还是更好?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-09 05:54:00

如果您可以使用部分结果做一些有用的事情,那么调用Read()并完成您得到的内容。特别是,如果您正在循环并处理每个Read()的结果,那么可以这样做,而不是使用ReadBlock()。

ReadBlock中的“块”一词指的是阻塞的动作,而不是下一个字节块。因此,它将强制停止进一步的执行,直到它完成。

如果您使用Reflector查看StreamReader.ReadBlock的实现(它是从TextReader.ReadBlock继承的),那么它所做的就是对" read“方法进行多次调用,直到"Read”方法返回0,或者我们已经读取了所请求的字节。这是必要的,因为"Read“方法不一定会返回您所要求的字节数。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10497575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档