c# - 缓冲流如何工作?

标签 c# java stream buffer encapsulation

在 Java 和 C# 中有几个用于缓冲流的类: C# 中的 BufferedStreamBuffered(Input|Output)StreamBuffered(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/

相关文章:

c# - 在另一个方法中使用 Main 方法中的变量

c# - 忽略特定子文件夹的 C# 编译警告?

haskell - io-streams 分区Ethers

java - FilterOutpuStream是否正常写入?

c# - mysql 创建唯一索引,索引名称中带有空格

c# - 使用 Entity Framework 持久化状态模式

java - 使用 jar 时出错,但不在库本身中出错

java - 错误 : Could not find or load main class when JAVA_OPTS in setenv. sh

Java序列化问题

java - 尝试在 Java 中的数组上使用 .stream() 时出现“找不到符号错误”