This question already has an answer here:
Difference between StreamReader.Read and StreamReader.ReadBlock
(1 个回答)
5年前关闭。
标题或多或少说明了一切。这些电话记录在案:
Here 表示
Here 用于具有相同参数类型的
我想提取字节数组的一部分,为此我编写了一个
我应该使用哪一种?其中之一是更快还是更好?
(1 个回答)
5年前关闭。
标题或多或少说明了一切。这些电话记录在案:
Here 表示
TextReader.Read Method (Char[], Int32, Int32)
和Here 用于具有相同参数类型的
TextReader.ReadBlock()
。我想提取字节数组的一部分,为此我编写了一个
MemoryStream
,我打算用 StreamReader
像这样读取它: StreamReader r = new StreamReader(new MemoryStream(rawData, 0, 184, false, false));
r.Read.....
我应该使用哪一种?其中之一是更快还是更好?
最佳答案
如果你可以用部分结果做一些有用的事情,然后调用 Read() 并处理你得到的结果。特别是如果您要循环遍历并处理每个 Read() 的结果,则执行此操作而不是使用 ReadBlock()。
ReadBlock 中的“block”一词指的是阻塞的操作,而不是下一个字节的“block”。所以它会强制停止进一步的执行,直到它完成。
如果您使用 Reflector 查看 StreamReader.ReadBlock(继承自 TextReader.ReadBlock)的实现,它所做的就是多次调用“Read”方法,直到“Read”方法返回 0 或我们读取为请求的许多字节。这是必需的,因为“读取”方法不一定会返回与您要求的一样多的字节。
关于c# - TextReader 上的 Read() 和 ReadBlock() 调用有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10497575/
10-12 04:08