缓冲流如何工作?

时间:2013-05-17 15:34:41

标签: c# java stream buffer encapsulation

在Java和C#中有几个缓冲流类: C#中的BufferedStreamBuffered(Input|Output)StreamBuffered(Reader|Writer)

他们在构造函数中获取一些流并实现相同的接口。

问题是 - 它是如何运作的?

当我尝试读取一个字节时会发生什么?它将大量字节读入内部缓冲区,然后逐字节地将其返回给我?在写一个字节?写入内部缓冲区并在flush()上写入内部流?

关于读/写一个字节数组 - 在缓冲流上执行它是否效率低导致从内部数组中双重复制字节?

1 个答案:

答案 0 :(得分:2)

  

它将大量字节读入内部缓冲区,然后逐字节地将其返回给我?

基本上,是的。从磁盘盘片或TCP流中请求数据需要时间,因此一次获取整块字节可能更有效,而不是尝试从源中单独检索它们。