news 2026/7/19 11:30:38

C# 二进制数据读写与BufferStream实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C# 二进制数据读写与BufferStream实战

文章目录

  • 一, 二进制数据读写操作

  • 二,BufferStream字节流临时存储对象


一,二进制数据读写操作:

1,二进制原始数据读写操作 通过BinaryWriter和BinaryReader进行实现,写如何读取性比FileStream性能要高 写入的内容可以是各种数据类型

2, 创建文件流 FileStream 一般用于作为其他类读写操作的文件流

FileStream fs = new FileStream(@"1.txt", FileMode.Create, FileAccess.ReadWrite);

3,创建写入流 传入指定类型

BinaryWriter bw = new BinaryWriter(fs);

4,写入数据:

//3,写入内容 //bw.Write("你好余伟");//字符串类型 //bw.Write(10);//写入整形数据 //bw.Write(true);//写入布尔数据 //bw.Write(12.1);//浮点类型 //写入数据 //传递一个字节数组 bw.Write(new UTF8Encoding().GetBytes("TRUE")); bw.Write(new UTF8Encoding().GetBytes("10")); fs.Flush();// 确保w完整写入 bw.Close(); //关闭写入流 fs.Close();//关闭文件流

5,读取数据文件:

【1】,方法:读取的时候一般采用while循环去读具体代码如下

【2】, br.Close();//释放读取对象

fs.Close();//释放文件流

fs = new FileStream(@"1.txt", FileMode.Open, FileAccess.ReadWrite); //创建一个二进制读取对象 BinaryReader br = new BinaryReader(fs); //一般不会采用单独去读一个数据 //Console.WriteLine(br.ReadString()); //Console.WriteLine(br.ReadInt32());//读取整形的10 //Console.WriteLine(br.ReadBoolean()); //Console.WriteLine(br.ReadDouble()); //读取的时候一般采用while循环去读 byte[] buffer = new byte[fs.Length]; while (br.Read(buffer,0,buffer.Length)>0) //(br.Read(buffer,0,buffer.Length) = 0时证明读取完了 { Console .WriteLine(Encoding.UTF8.GetString(buffer)); } br.Close();//释放读取对象 fs.Close();//释放文件流 Console.ReadKey();

二,BufferStream字节流临时存储对象

1,BufferedStream 缓存区存储对象, 特点:读取性能比较快, 也需要包装其他文件流(FileStream)

2,创建临时存储对象:

BufferedStream b1 = new BufferedStream(File.Create(@"1.txt"));

3, 写入内容 传递一个字节数组

byte[] in1 = new UTF8Encoding().GetBytes("鱼不是余,萎不是伟,鱼是余伟的余,萎是余伟的伟");
b1.Write(in1, 0 , in1.Length);//从字节数组0的位置开始, 写字节数组长度内容


b1.Flush();
b1.Close();

4,创建读取存储对象

b1 = new BufferedStream(File.OpenRead(@"1.txt"));

byte[] arr = new byte[b1.Length];//定义数组存储读取的数据 长度为缓存区的大小

while(b1.Read(arr, 0, arr.Length)>0) //如果数据没读,继续读
{
Console.WriteLine(Encoding.UTF8.GetString(arr));//把arr转成字符串类型


}

Console.ReadKey();


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 19:29:55

5分钟掌握md2pptx:让Markdown一键转PPT不再是梦想

5分钟掌握md2pptx:让Markdown一键转PPT不再是梦想 【免费下载链接】md2pptx Markdown To PowerPoint converter 项目地址: https://gitcode.com/gh_mirrors/md/md2pptx 还在为制作演示文稿而头疼吗?每次打开PowerPoint都要花费大量时间调整格式、…

作者头像 李华
网站建设 2026/7/18 7:08:28

Sunshine配置终极指南:从入门到精通的完整手册

Sunshine配置终极指南:从入门到精通的完整手册 【免费下载链接】Sunshine Sunshine: Sunshine是一个自托管的游戏流媒体服务器,支持通过Moonlight在各种设备上进行低延迟的游戏串流。 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine …

作者头像 李华
网站建设 2026/7/14 1:28:09

Jasminum插件:重新定义中文文献管理的智能革命

Jasminum插件:重新定义中文文献管理的智能革命 【免费下载链接】jasminum A Zotero add-on to retrive CNKI meta data. 一个简单的Zotero 插件,用于识别中文元数据 项目地址: https://gitcode.com/gh_mirrors/ja/jasminum 在学术研究的浩瀚海洋中…

作者头像 李华
网站建设 2026/7/19 1:41:09

零基础入门USB外设驱动安装指南

从“未知设备”到即插即用:手把手教你搞定USB驱动安装 你有没有遇到过这样的情况?新买的打印机插上电脑,系统却提示“未知设备”;或者开发板连上后,串口工具根本找不到端口。明明线没坏、设备也有电,问题出…

作者头像 李华
网站建设 2026/7/19 1:31:18

Dify如何生成吸引点击的公众号推文标题?

Dify如何生成吸引点击的公众号推文标题? 在新媒体内容竞争白热化的今天,一个爆款文章的成功,往往从一条“让人忍不住点开”的标题开始。运营者常常面临这样的困境:写了一篇精心打磨的文章,却因标题平庸而石沉大海&…

作者头像 李华
网站建设 2026/7/19 1:55:33

8、文档管理系统设计与测试实践解析

文档管理系统设计与测试实践解析 在软件开发中,文档管理系统的设计与测试是至关重要的环节。下面将深入探讨文档管理系统设计的多个方面,包括文档类的特性、替代设计方法、代码扩展与复用,以及测试卫生的相关要点。 1. 不可变文档类 在程序里,有一个不可变的 Document …

作者头像 李华