1. 核心概念
- IO流即输入输出流,以水管为形象类比,用于实现文件、内存、网络等介质的数据读写,基类为 System.IO.Stream (抽象类)。
- 流分为字节流(万能流,读写文本、图片、视频等所有文件)和字符流(仅读写文本文件,按字符操作)。
2. 字节流核心派生类
- FileStream :节点流,直接对接文件,是文件读写的核心类;创建时需指定文件路径、 FileMode (文件打开方式)、 FileAccess (访问权限)、 FileShare (共享权限),注意参数组合合法性,否则会抛异常。
- MemoryStream :内存流,在内存中读写数据。
- BufferedStream :缓冲流,通过缓冲区(byte[]数组)提升 FileStream 的读写性能。
- 其他: NetworkStream (网络流)、 CryptoStream (加密流)、 GZipStream (压缩流)。
3. Stream抽象类核心方法
- 读取: Read(byte[] buffer, int offset, int count) / Read(Span<byte> buffer)
- 写入: Write(byte[] buffer, int offset, int count) / Write(ReadOnlySpan<byte> buffer)
- 定位与长度: Seek(long offset, SeekOrigin origin) / SetLength(long value)
- 资源管理: Flush() (刷新缓冲区)、 Close() / Dispose() (关闭释放资源),推荐用 using 语句自动释放。
4. 字节流读写示例
- 读取文件:通过 FileStream 循环读取字节数组,再用 Encoding.UTF8.GetString 转换为字符串。
- 写入文件:将字符串转为字节数组,通过 FileStream 的 Write 方法写入, FileMode.Append 为追加模式。
- 文件复制:通过两个 FileStream (一个读、一个写),借助字节数组缓冲区循环读写,自动创建目标文件目录。
5. 字符流(嵌套流,仅文本文件)
- 核心类: StreamReader (字符输入流)、 StreamWriter (字符输出流),可直接操作字符,无需手动转换字节数组。
- 构造方式:支持传入文件路径或底层 Stream 对象,可指定编码(如UTF-8)。
6. 缓冲流(BufferedStream)工作原理
- 读取:一次性从底层流读取大量数据到缓冲区,后续读取直接从缓冲区获取,减少IO次数。
- 写入:先将数据写入缓冲区,缓冲区满或调用 Flush 时,一次性写入底层流。
C# IO流核心知识点总结
张小明
前端开发工程师
TCP 通信从原理到代码:用仓库与快递箱的比喻读懂交互逻辑
引言: https://github.com/0voice 在我们日常使用的聊天软件、文件传输工具、网页浏览背后,都藏着网络通信协议的身影,其中 TCP(传输控制协议)是最核心、最常用的一种。它就像现实世界中一条可靠的 “快递通道”&…
基于springboot的课程作业管理系统(11490)
有需要的同学,源代码和配套文档领取,加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码(前后端源代码SQL脚本)配套文档(LWPPT开题报告)远程调试控屏包运行 三、技术介绍 Java…
智能体开发系统学习实践
智能体开发不是 AI 算法问题,而是一个“不稳定智能组件”的系统工程问题。作为一名资深 Java 开发工程师,在进入 智能体(AI Agent)方向时,最大的优势是:工程能力、系统设计能力、并发与分布式经验。真正需要补的不是“再学一门语言”,而是 AI 思维 + Agent 架构 + LLM 工…
【完全免费】一分钟教会你,如何利用浏览器插件在网页提取下载音乐mp3文件和音频、音效素材;电脑小白也能轻易上手。
——软件使用教程—— 一分钟教会你,如何利用浏览器插件在网页提取下载音乐mp3文件——下载地址(防止被拦截,请用浏览器打开)—— 夸克地址: https://pan.dxlszyk.com/s/1jcee812a 多盘地址: https://w…
第13章:项目资源管理【章节重点】
信息系统项目管理师第13章:项目资源管理【章节重点】。重点章节:不论是单选、案例分析还是论文都是考点,本视频由科科过软考整理制作。 第13章:项目资源管理【章节重点】
Pelco KBD300A 模拟器:05.校验算法终极对比 + 完整 100+ 指令封装 + KBD300A 所有隐藏功能函数化
第5篇 校验算法终极对比 完整 100 指令封装 KBD300A 所有隐藏功能函数化 —— 真正的“软件定义键盘”诞生:一行代码等于一次真实 KBD300A 按键 发布时间:2025年12月 前言 今天我们把前四篇的所有零散知识彻底凝固成一块坚不可摧的“钢板”—— 一…