news 2026/4/18 9:57:40

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/4/18 2:08:15

SpringBoot的高校宣讲会管理系统

博主介绍:✌ 专注于Java,python,✌关注✌私信我✌具体的问题,我会尽力帮助你。一、研究目的本研究旨在设计并实现一个基于SpringBoot的高校宣讲会管理系统,以提升高校宣讲会的组织效率和管理水平。具体研究目的如下: 首先&#xf…

作者头像 李华
网站建设 2026/4/18 2:06:31

基于灰色马尔科夫的预测研究附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和数学建模资料 &#x1f34…

作者头像 李华
网站建设 2026/4/18 3:52:48

Python_uniapp-校园二手交易平台小程序 卖家

文章目录校园二手交易平台小程序(卖家端)设计摘要系统设计与实现的思路主要技术与实现手段源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!校园二手交易平台小程序(卖家端)设计摘要 功能模块…

作者头像 李华
网站建设 2026/4/17 13:15:49

python基于flask框架的数学课程测试考试系统

目录基于Flask框架的数学课程测试考试系统摘要开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!基于Flask框架的数学课程测试考试系统摘要 该系统采用Python的Flask框架开发,旨在…

作者头像 李华
网站建设 2026/4/18 3:52:19

python基于flask框架的水果商城设计与实现

目录摘要开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!摘要 水果商城系统基于Python的Flask框架开发,结合MySQL数据库实现数据存储与管理,前端采用HTML、CSS、Java…

作者头像 李华