1.数据流
2.内存流
3.IO流
4.文本流
1.数据流
数据流表示一个"连续的, 有序的字节序列", 从一个点流向另一个点; 游戏开发中, 任何数据的传输都是数据流, 比如:
a.从硬盘读取一个角色模型到内存
b.将玩家的得分从客户端发送到服务器
c.将游戏设置保存到配置文件
所有这些数据的移动, 都可以称为"数据流"; 数据流是老爸, 内存流, IO流, 文本流都是它的儿子, 各有所长
2.内存流
内存流也是一种数据流, 但它的源头和目的地都在内存(RAM)中
1).核心特点: 速度极快, 由于完全在内存中, 避免了缓慢的磁盘IO或网络延迟
2).游戏开发中的使用
a.资源解压/解密
- 从硬盘(IO流)读取一个被压缩或加密的纹理文件
- 将这个文件的数据读入一个内存流
- 在内存流中进行快速的解压/解密操作
- 将处理好的, 可以直接使用的数据从内存流送给显卡
b.网络数据包组装/解析
- 发送一个玩家的数据(位置, 动作, 状态), 将这些零散的数据包打包成一个完整的网络包
- 创建一个内存流, 依次将各种数据写入其中, 组装成一个完整的字节数组
- 最后, 将这个内存流的数据通过网络(IO流)一次性发出去; 接收端则反向操作, 从网络IO流收到数据后, 放入内存流进行
解析
3).简单比喻:
IO流是从仓库(硬盘)运货到工厂(内存), 而内存流是在工厂内部的不同车间之间用传送带快速传送半成品
3.IO流
IO流是"输入/输出流"的简称, 它描述的是"数据在内存和外部设备(如硬盘, 光盘, 网络等)之间的流动"
1).核心: 跨越了内存和外部世界的边界
I(Input/输入): 从外部流向内存, 比如从硬盘读取数据
O(Output/输出): 从内存流向外部, 比如向硬盘写入数据
2).游戏开发中的例子
a.加载游戏: 从硬盘(外部)读取存档文件、场景资源到内存(内部), 这是输入流
b.保存游戏: 将内存中的玩家数据(等级、装备、位置)写入到硬盘的存档文件中, 这是输出流
c.联网对战: 将你的操作数据发送给服务器(输出流), 并从服务器接收其他玩家的数据(输入流)
一句话总结: IO流是内存与外部世界(硬盘、网络)的桥梁, 负责数据的持久化和交换
4.文本流
文本流属于IO流的子集, 基于字节流封装; 它的工作流程如下:
a.底层通过字节流读取磁盘中的二进制字节(文本文件本质是按编码存储的字节)
b.自动将字节转换为对应编码的字符(如UTF-8的字节转成中文/英文)
c.向上层提供"按字符读写"的便捷接口(如ReadLine()读一行文本)
