news 2026/5/3 18:41:02

3.6 MemoryStream

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
3.6 MemoryStream

1.MemoryStream简介

2.MemoryStream常用方法和属性


1.MemoryStream简介

MemoryStream是C#中System.IO 命名空间下的一个类,它将数据存储在内存中,而非磁盘文件,因此读写速度极快,适合临 时处理小量数据(如序列化/反序列化、网络数据中转、内存中操作字节数组等)简单来说:a.普通FileStream操作的是磁盘文件,MemoryStream操作的是内存中的字节数组 b.用完后需及时释放内存(通过using语句自动释放)

2.MemoryStream常用方法和属性

1).核心属性 a.Position 当前流的读写位置(必须重置到0才能读取刚写入的数据,否则从末尾开始读)b.Length 流中存储的字节总数 c.Capacity 流的内存容量(可自动扩容,也可手动指定)
2).核心方法 a.Write(byte[]buffer,intoffset,intcount)将字节数组写入流(offset 是起始索引,count是写入长度)b.Read(byte[]buffer,intoffset,intcount)从流读取字节到数组(返回实际读取的字节数)c.ToArray()将流中所有数据转为字节数组 d.GetBuffer()获取流的底层字节数组(包含未使用的容量)e.Flush()清空流缓冲区(MemoryStream中无实际作用,仅为实现抽象类)f.Close()/Dispose()释放资源(using语句会自动调用)


usingSystem;usingSystem.IO;usingSystem.Text;classMemoryStreamDemo{staticvoidMain(){// 1. 基础用法:写入字符串到 MemoryStream,再读取出来// 定义要写入的字符串stringoriginalText="Hello, MemoryStream!";// 将字符串转为字节数组(指定编码,避免乱码)byte[]inputBytes=Encoding.UTF8.GetBytes(originalText);// using 语句自动释放资源(关键:避免内存泄漏)using(MemoryStreamms=newMemoryStream()){// 2. 写入字节数组到 MemoryStreamms.Write(inputBytes,0,inputBytes.Length);// 3. 重置流的位置到起始处(否则读取时会从末尾开始,读不到数据)ms.Position=0;// 4. 从 MemoryStream 读取数据到新的字节数组byte[]outputBytes=newbyte[ms.Length];intbytesRead=ms.Read(outputBytes,0,outputBytes.Length);// 5. 将字节数组转回字符串stringreadText=Encoding.UTF8.GetString(outputBytes,0,bytesRead);Console.WriteLine("读取到的内容:"+readText);// 输出:Hello, MemoryStream!// 6. 快捷获取 MemoryStream 中的所有字节(替代手动读取)byte[]allBytes=ms.ToArray();Console.WriteLine("字节数组长度:"+allBytes.Length);// 输出:20(对应字符串的UTF8字节数)}// 7. 进阶:初始化时传入字节数组(只读/可写)byte[]initBytes=Encoding.UTF8.GetBytes("初始化的字节数组");// 创建基于现有字节数组的 MemoryStream(可写)using(MemoryStreamms2=newMemoryStream(initBytes)){// 追加写入数据byte[]appendBytes=Encoding.UTF8.GetBytes(" - 追加内容");ms2.Write(appendBytes,0,appendBytes.Length);// 重置位置后读取全部ms2.Position=0;stringfullText=newStreamReader(ms2).ReadToEnd();Console.WriteLine("追加后的内容:"+fullText);// 输出:初始化的字节数组 - 追加内容}}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/2 19:01:01

一文读懂Agent模型思维链:从概念到实现,提升AI推理稳定性

本文解析了Agent模型中的思维链技术,介绍了Claude的Interleaved Thinking、MiniMax的Thinking-in-Tools等不同实现方式。将思考内容带入上下文可提升多轮推理稳定性,减少推理偏差,并通过签名校验和加密保障安全性。思维链已成为Agent多步骤推…

作者头像 李华
网站建设 2026/4/28 6:29:15

欧姆龙CP1H与三菱E700变频器的“三角恋“攻略

欧姆龙CP1H与3台三菱E700变频器通讯程序 功能:程序,欧姆龙CP1H的CIF11通讯板,实现对3台三菱e700变频器 设定频率,读取实际频率,通讯稳定可靠。 后续可根据需要,按照同原理和结构扩展台数,非常灵…

作者头像 李华
网站建设 2026/5/2 19:48:15

基于三菱PLC和组态王恒温控制系统的设计:加热炉温度控制的梯形图程序、接线图原理图、IO分配及...

基于三菱PLC和组态王恒温控制系统的设计加热炉温度控制 带解释的梯形图程序,接线图原理图图纸,io分配,组态画面三伏天里给车间加热炉做恒温控制,那酸爽就跟抱着暖气片吃火锅似的。今天咱们来聊聊基于三菱FX3U PLC和组态王的温度控…

作者头像 李华
网站建设 2026/5/2 14:40:37

多行业通用的高清信号利器:六大核心技术解析高清混合矩阵

随着音视频技术向高清化、多元化升级,不同格式的高清模拟与数字信号共存成为常态,单一信号处理设备难以满足跨格式切换与集成需求。高清混合矩阵作为模块化数模信号处理平台,打破了传统矩阵“一信号一设备”“接口需对应”的局限,…

作者头像 李华
网站建设 2026/4/28 16:23:04

计算机毕业设计springboot河北水利电力学院班级事务管理系统 基于SpringBoot的河北水电学院班级事务综合服务平台 SpringBoot驱动的河北水利电力学院班级事务数字化运营系统

计算机毕业设计springboot河北水利电力学院班级事务管理系统v2hb8j7q (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。高校班级日常事务琐碎、数据分散、流程不透明,纸…

作者头像 李华