标题或多或少地说明了一切。通话记录如下:
这里 for TextReader.Read Method (Char[], Int32, Int32)和
这里用于具有相同参数类型的TextReader.ReadBlock()。
我想提取字节数组的一部分,为此,我为其组成了一个MemoryStream,我打算用这样的StreamReader来读取该数组:
StreamReader r = new StreamReader(new MemoryStream(rawData, 0, 184, false, false));
r.Read.....我该用哪一种?其中一个是更快还是更好?
发布于 2012-05-09 05:54:00
如果您可以使用部分结果做一些有用的事情,那么调用Read()并完成您得到的内容。特别是,如果您正在循环并处理每个Read()的结果,那么可以这样做,而不是使用ReadBlock()。
ReadBlock中的“块”一词指的是阻塞的动作,而不是下一个字节块。因此,它将强制停止进一步的执行,直到它完成。
如果您使用Reflector查看StreamReader.ReadBlock的实现(它是从TextReader.ReadBlock继承的),那么它所做的就是对" read“方法进行多次调用,直到"Read”方法返回0,或者我们已经读取了所请求的字节。这是必要的,因为"Read“方法不一定会返回您所要求的字节数。
https://stackoverflow.com/questions/10497575
复制相似问题