9

在 Java 和 C# 中有几个用于缓冲流的类: BufferedStream在 C# 中Buffered(Input|Output)StreamBuffered(Reader|Writer).

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

问题是——它是如何工作的?

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

关于读取/写入字节数组 - 在缓冲流上执行它是否效率低下导致将字节复制到内部数组和从内部数组复制?

4

1 回答 1

3

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

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

于 2013-05-17T15:37:26.397 回答