在 Java 和 C# 中有几个用于缓冲流的类:
C# 中的 BufferedStream
、Buffered(Input|Output)Stream
和 Buffered(Reader|Writer)
。
他们在构造函数中获取一些流并实现相同的接口(interface)。
问题是 - 它是如何工作的?
当我尝试读取一个字节时会发生什么?它把很多字节读入内部缓冲区,然后一个字节一个字节地返回给我?写一个字节?写入内部缓冲区并在 flush()
上将其写入内部流?
关于读取/写入字节数组 - 在缓冲流上执行此操作是否效率低下,原因是将字节复制到内部数组和从内部数组复制字节?
最佳答案
It reads a lot of bytes into inner buffer and then returns it to me byte after byte?
基本上,是的。从磁盘盘片或 TCP 流请求数据需要时间,因此一次获取整个字节 block 比尝试从源中单独检索它们效率更高。
关于c# - 缓冲流如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16612918/