C#文件流二进制文件的读写

目录

一、BinaryWriter类

二、BinaryReader类

三、示例

1.源码

2.生成效果


        二进制文件的写入与读取主要是通过BinaryWriter类和BinaryReader类来实现的。

一、BinaryWriter类

        BinaryWriter类以二进制形式将基元类型写入流,并支持用特定的编码写入字符串,其常用方法及说明:

方   法

说    明

Close

关闭当前的BinaryWriter类和基础流

Seek

设置当前流中的位置

Write

将值写入当前流

二、BinaryReader类

        BinaryReader用特定的编码将基元数据类型读作二进制值,其常用方法及说明:

方    法说   明
Close关闭当前阅读器及基础流
PeekChar返回下一个可用的字符,并且不提升字节或字符的位置
Read从基础流中读取字符,并提升流的当前位置
ReadBoolean从当前流中读取Boolean值,并使该流的当前位置提升一个字节
ReadByte从当前流中读取下一个字节,并使流的当前位置提升一个字节
ReadBytes从当前流中将count个字节读入字节数组,并使当前位置提升count个字节
ReadChar从当前流中读取下一个字符,并根据所使用的Encoding和从流中读取的特定字符,提升流的当前位置
ReadChars从当前流中读取count个字符,以字符数组的形式返回数据,并根据所使用的Encoding和从流中读取
的特定字符,提升当前位置
ReadInt32从当前流中读取4个字节有符号整数,并使流的当前位置提升4个字节
ReadString从当前流中读取一个字符串。字符串有长度前缀, 一次将7位编码为整数

三、示例

1.源码

//文件流的二进制读写
//Windows窗体应用.NET8.0,不用设计器
namespace _08
{public partial class Form1 : Form{private Button? button1;private Button? button2;private TextBox? textBox1;private OpenFileDialog? openFileDialog1;private SaveFileDialog? saveFileDialog1;private Label? label1;public Form1(){InitializeComponent();Load += Form1_Load;}private void Button1_Click(object? sender, EventArgs e){if (textBox1!.Text == string.Empty){MessageBox.Show("要写入的文件内容不能为空");}else{               saveFileDialog1!.Filter = "二进制文件(*.dat)|*.dat";   //设置保存文件的格式if (saveFileDialog1.ShowDialog() == DialogResult.OK){//使用“另存为”对话框中输入的文件名实例化FileStream对象using (FileStream? myStream = new(saveFileDialog1.FileName, FileMode.OpenOrCreate, FileAccess.ReadWrite)){                      new BinaryWriter(myStream).Write(textBox1.Text); //内联临时变量二进制写入流对象                    new BinaryWriter(myStream).Close();              //关闭当前二进制写入流                       myStream.Close();                                                 //关闭当前文件流}textBox1.Text = string.Empty;}}}private void Button2_Click(object? sender, EventArgs e){          openFileDialog1!.Filter = "二进制文件(*.dat)|*.dat";         //设置打开文件的格式if (openFileDialog1.ShowDialog() == DialogResult.OK){textBox1!.Text = string.Empty;//使用“打开”对话框中选择的文件名实例化FileStream对象using FileStream? myStream = new(openFileDialog1.FileName, FileMode.Open, FileAccess.Read);if (new BinaryReader(myStream).PeekChar() != -1)   //内联临时变量二进制写入流{                   textBox1.Text = Convert.ToString(new BinaryReader(myStream).ReadString());  //以二进制方式读取文件}               new BinaryReader(myStream).Close();                //关闭当前二进制读取流               myStream.Close();                                  //关闭当前文件流}}private void Form1_Load(object? sender, EventArgs e){// textBox1textBox1 = new TextBox{Location = new Point(12, 29),Multiline = true,Name = "textBox1",Size = new Size(270, 111)};// label1label1 = new Label{AutoSize = true,Location = new Point(12, 9),Text = "文件内容:"};// button1button1 = new Button{Location = new Point(66, 146),Name = "button1",Size = new Size(75, 23),Text = "写入",UseVisualStyleBackColor = true};button1.Click += Button1_Click;// button2button2 = new Button{Location = new Point(147, 146),Name = "button2",Size = new Size(75, 23),Text = "读取",UseVisualStyleBackColor = true};button2.Click += Button2_Click;// openFileDialog1openFileDialog1 = new OpenFileDialog{FileName = "openFileDialog1"};//saveFileDialog1saveFileDialog1 = new SaveFileDialog();//Form1AutoScaleDimensions = new SizeF(7F, 17F);AutoScaleMode = AutoScaleMode.Font;ClientSize = new Size(295, 180);StartPosition = FormStartPosition.CenterScreen;Controls.Add(label1);Controls.Add(textBox1);Controls.Add(button2);Controls.Add(button1);}    }
}

2.生成效果

         操作过程:因为我先前在当前目录下已经存过一个二进制文件了,所以:生成→ 读取→ 浏览到当前目录,并选择目录下的二进制文件,打开显示在文本框里。→ 编辑打开的文件,存储,可以另存为,也可以覆盖原文件。→ 再打开文件。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/187040.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(五)基于高尔夫优化算法GOA求解无人机三维路径规划研究(MATLAB代码)

一、无人机模型简介: 单个无人机三维路径规划问题及其建模_IT猿手的博客-CSDN博客 参考文献: [1]胡观凯,钟建华,李永正,黎万洪.基于IPSO-GA算法的无人机三维路径规划[J].现代电子技术,2023,46(07):115-120 二、高尔夫优化算法GOA简介 高尔夫优化算法…

使用Pytorch从零开始实现CLIP

生成式建模知识回顾: [1] 生成式建模概述 [2] Transformer I,Transformer II [3] 变分自编码器 [4] 生成对抗网络,高级生成对抗网络 I,高级生成对抗网络 II [5] 自回归模型 [6] 归一化流模型 [7] 基于能量的模型 [8] 扩散模型 I, 扩散模型 II…

sublime Text使用

1、增加install 命令面板 工具(tool)->控制面板(command palette) -> 输入install ->安装第一个install package controller,以下安装过了,所以没展示 2、安装json格式化工具 点击install package,等几秒会进入控制面板&#xff0…

润申信息企业标准化管理系统 SQL注入漏洞复现

0x01 产品简介 润申信息科技企业标准化管理系统通过给客户提供各种灵活的标准法规信息化管理解决方案,帮助他们实现了高效的标准法规管理,完成个性化标准法规库的信息化建设。 0x02 漏洞概述 润申信息科技企业标准化管理系统 CommentStandardHandler.as…

高级I/O 基础概念

文章目录 什么是高级I/O五种常见高级I/O同步IO和异步IO多路转接是异步IO吗 什么是高级I/O 高级I/O(Advanced I/O)是指在计算机系统中进行输入和输出操作时使用的一种更高级的接口和技术。它提供了比传统的基本I/O操作更丰富和灵活的功能,以满…

echarts实现3D柱状图

效果如图 let setData function(data, constData, showData) {data.filter(function(item) {if (item) {constData.push(1);showData.push(item);} else {constData.push(0);showData.push({value: 1,itemStyle: {normal: {borderColor: "rgba(0,0,0,0)",borderWidt…

传统算法:使用 Pygame 实现线性查找

使用 Pygame 模块实现了线性查找的动画演示。首先,它生成一个包含随机整数的数组,并通过 Pygame 在屏幕上绘制这个数组的条形图。接着,通过线性查找算法对数组进行查找,动画效果可视化每一步的变化。在查找的过程中,程序逐个遍历数组元素,如果找到目标值,将相应的元素高…

最简单的链路追踪收集器

链路追踪可帮助您快速了解程序服务之间的调用关系,并快速洞悉内部发生的情况。主流的链路追踪系统有zipkin,jaeger,skywalking等,由于opentelemetry的存在,都具有opentelemetry的转换器。 我们利用opentelemetry来进行zipkin,jaeger,skywalk…

Vue H5页面长按保存为图片

安装依赖&#xff1a;npm install html2canvas -d <template><div class"index"><div id"captureId" class"capture" v-show"firstFlag"><ul><li>1</li><li>2</li><li>3<…

组合(回溯算法)

77. 组合 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 样例输入 示例 1&#xff1a; 输入&#xff1a;n 4, k 2 输出&#xff1a; [[2,4],[3,4],[2,3],…

Java项目学生管理系统二查询所有

学生管理 近年来&#xff0c;Java作为一门广泛应用于后端开发的编程语言&#xff0c;具备了广泛的应用领域和丰富的开发资源。在前几天的博客中&#xff0c;我们探讨了如何搭建前后端环境&#xff0c;为接下来的开发工作打下了坚实的基础。今天&#xff0c;我们将进一步扩展我…

距离向量路由协议——RIP

目录 动态路由动态路由简介为什么需要动态路由动态路由基本原理路由协议的分类 距离向量路由协议RIPv1RIP简介RIPv1的主要特征RIPv1的基本配置RIPv1配置案例被动接口单播更新使用子网地址 RIPv2RIPv2的基本配置RIPv2配置案例 RIPv2的高级配置与RIPv1的兼容性手工路由汇总触发更…

快速了解ChatGPT(大语言模型)

目录 GPT原理&#xff1a;文字接龙&#xff0c;输入一个字&#xff0c;后面会接最有可能出现的文字。 GPT4 学会提问&#xff1a;发挥语言模型的最大能力 参考李宏毅老师的课快速了解大语言模型做的笔记&#xff1a; Lee老师幽默的开场&#xff1a; GPT&#xff1a;chat Ge…

高等数学积分关系定理(格林公式、高斯公式、斯托克斯公式)的理解

1 格林公式、高斯公式、斯托克斯公式 1.1 格林公式&#xff08;Green formula&#xff09; 1.1.1 格林公式例题 1.2 高斯公式&#xff08;Gauss formula&#xff09; 1.2.1 高斯公式例题1 1.2.2 高斯公式例题2 1.3 斯托克斯公式&#xff08;Stokes formula&#xff09; 1.3.1 …

Git修改远程仓库名称

1、先直接在远程点仓库名&#xff0c;然后左侧菜单栏找settings-general&#xff0c;然后直接修改工程名&#xff0c;保存即可。 2、还是在settings-general下&#xff0c;下拉找到Advanced点击Expand展开&#xff0c;然后下拉到最底部 在Change path里填入新的项目名称&#x…

GCN01——Ubuntu中设置vivado编辑器为vscode

确定vscode位置 在命令行中输入 which code得到文件地址 进入文件夹后可看到&#xff0c;这是个链接文件&#xff0c;不过无所谓&#xff0c;就用这个地址就行 设置Text Editor 打开setting选择右侧text editor 这里说明了如何进行设置 将自己的地址加进去就行 /usr/share…

Echarts 设置数据条颜色 宽度

设置数据条颜色&#xff08;推荐&#xff09; let yData [{value: 500,time: 2012-11-12,itemStyle: //设置数据条颜色{normal: { color: red }}},{value: 454,time: 2020-5-17},{value: 544,time: 2022-1-22},{value: 877,time: 2013-1-30}, {value: 877,time: 2012-11-12}]…

亚马逊云科技:探索未来云计算之窗

云计算技术已经成为现代科技领域中至关重要的一个环节&#xff0c;它为各种行业提供了高效、灵活、可扩展的计算和数据存储解决方案。而在这个领域中&#xff0c;亚马逊云科技&#xff08;Amazon Web Services&#xff0c;AWS&#xff09;以其卓越的技术创新和广泛的云服务覆盖…

近期知识点随笔

菜单查询&#xff08;编写权限时的细节&#xff09; 菜单查询list为了侧边框展示更完整&#xff08;不报空指针&#xff09; 登录时&#xff08;用户名&#xff09;查询出多个结果&#xff08;保证用户名唯一&#xff09; 文件上传 前端 对权限与菜单绑定的修改&#xff08;实…

(三)基于高尔夫优化算法GOA求解无人机三维路径规划研究(MATLAB代码)

一、无人机模型简介&#xff1a; 单个无人机三维路径规划问题及其建模_IT猿手的博客-CSDN博客 参考文献&#xff1a; [1]胡观凯,钟建华,李永正,黎万洪.基于IPSO-GA算法的无人机三维路径规划[J].现代电子技术,2023,46(07):115-120 二、高尔夫优化算法GOA简介 高尔夫优化算法…