在Java和c#中有几个类用于缓冲流:BufferedStream
在c#, Buffered(Input|Output)Stream
和Buffered(Reader|Writer)
中
它们在构造函数中获取一些流并实现相同的接口。
问题是——它是如何工作的?
当我试图读取一个字节时会发生什么?它读取很多字节到内部缓冲区,然后返回给我一个字节又一个字节?写一个字节?写入到内部缓冲区,并在flush()
上写入到内部流?
和关于读/写字节数组-它是低效的,这样做的缓冲流导致双复制字节进入和从内部数组?
它读取大量字节到内部缓冲区,然后返回给我字节后字节?
基本上,是的。从磁盘盘或TCP流请求数据需要时间,因此一次获得整个字节块比尝试从源单独检索它们更有效。