c - 流和缓冲区之间的关系?
问题描述
我是一个新手程序员,你能帮我想象一下什么是流,它是一个固定的字节数组,用于将数据从 ie: 文件传输到 Y 吗?这里的 Y 是什么,是缓冲区还是别的什么?缓冲区以什么方式与流相关?
解决方案
流是数据的源(输入流)或接收器(输出流),可及时(或提供)时间(而不是一次全部)。
缓冲区是一个数组(一块内存),用于临时存储数据。输入缓冲区通常由操作系统从输入流中填充;一个输出缓冲区(一旦被程序员填满)被操作系统使用。
想象一下,你想把一个浴缸装满水。您从可以通过水龙头转移的水源开始,例如水箱或公共自来水厂。你在水龙头下放了一个水桶,然后打开它。当桶装满时,你把它倒进浴缸,然后放回水龙头下。你重复这个直到你的浴缸装满为止。
例如,加载文件的工作方式几乎相同。您有一个数据源(磁盘上的文件);您打开一个输入流(一种编程结构,它通常会以磁盘读取它们的速度为您提供数据)。您分配一个缓冲区(一个小内存区域)并告诉系统从流中填充它。当它已满时,您将其附加到为文件内容保留的大块已分配内存中,然后再次填充缓冲区。读取整个文件后,关闭流。
推荐阅读
- powershell - 使用 PowerShell 复制事件查看器日志并在成功复制时将其删除
- react-native - 用一种字体包裹整个 React Native 应用程序
- python - Python time_ns 时间差在 1 毫秒 (10^6 ns) 以下时为 0
- marathontesting - 马拉松 | JNLP 应用程序上的 Java 驱动程序 - 没有可用的顶级窗口
- javascript - jQuery Select Nested List - 目标同级列表项
- python - 使用 Python 函数检查文本中的特殊字符
- visual-studio-code - 如何在 VSCode 中绑定 ctrl-alt-up/down 以像 VS2019 一样工作?
- ios - 科尔多瓦插件相机未在 iPad 电容器上显示画廊
- sql-server - 使用视图的 case 子句
- azure-devops - 如何工作项获取仅更改链接的更改的历史记录项