在Java和C#中有几个缓冲流类:
C#中的BufferedStream
,Buffered(Input|Output)Stream
和Buffered(Reader|Writer)
。
他们在构造函数中获取一些流并实现相同的接口。
问题是 - 它是如何运作的?
当我尝试读取一个字节时会发生什么?它将大量字节读入内部缓冲区,然后逐字节地将其返回给我?在写一个字节?写入内部缓冲区并在flush()
上写入内部流?
关于读/写一个字节数组 - 在缓冲流上执行它是否效率低导致从内部数组中双重复制字节?
答案 0 :(得分:2)
它将大量字节读入内部缓冲区,然后逐字节地将其返回给我?
基本上,是的。从磁盘盘片或TCP流中请求数据需要时间,因此一次获取整块字节可能更有效,而不是尝试从源中单独检索它们。