当前位置: 首页 > news >正文

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.生成效果

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

 

 

相关文章:

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

目录 一、BinaryWriter类 二、BinaryReader类 三、示例 1.源码 2.生成效果 二进制文件的写入与读取主要是通过BinaryWriter类和BinaryReader类来实现的。 一、BinaryWriter类 BinaryWriter类以二进制形式将基元类型写入流,并支持用特定的编码写入字符串&#…...

如何正确选择爬虫采集接口和API?区别在哪里?

在信息时代,数据已经成为了一个国家、一个企业、一个个人最宝贵的资源。而爬虫采集接口则是获取这些数据的重要手段之一。本文将从以下八个方面进行详细讨论: 1.什么是爬虫采集接口? 2.爬虫采集接口的作用和意义是什么? 3.爬虫…...

k8s部署jenkins

1.先决条件 1.因为国内的容器镜像加速器无法实时更新docker hub上的镜像资源.所以可以自己进行jenkins的容器镜像创建,. 2.这里用到了storageClass k8s的动态制备.详情参考: k8s-StoargClass的使用-基于nfs-CSDN博客 3.安装docker服务.(用于构建docker image) 2.构建jenki…...

HTTP相关

HTTP 什么是http - 蘑菇声活 http特点 1.基于TCP协议之上的应用层协议 2.基于请求--响应 3.无状态(每次发送请求对服务端都是新的) 4.无/短连接(客户端不会一直跟服务端连接) http请求协议与响应协议 请求协议 请求首行&…...

Armv8.x和Armv9.x架构扩展简介

目录 一、概述 二、Armv8.x和Armv9.x是什么意思? 三、为什么我们需要.x扩展? 四、处理器实现...

node的proxy-server使用

代理服务器是一种常见的网络工具,可以用来隐藏客户端的真实IP地址,保护客户端的隐私,也可以用来绕过一些网络限制,访问被封锁的网站。在这篇博客文章中,我们将讲解代理服务器的API基本使用流程和思路,以及代…...

FO-like Transformation in QROM Oracle Cloning

参考文献: [RS91] Rackoff C, Simon D R. Non-interactive zero-knowledge proof of knowledge and chosen ciphertext attack[C]//Annual international cryptology conference. Berlin, Heidelberg: Springer Berlin Heidelberg, 1991: 433-444.[BR93] Bellare M…...

Redis - 多数据源切换

问题描述 最近遇到一个 Redis 多数据源切换问题,不过我这个没有那么动态切换需求,所以就写了一种比较硬编码的方式来做『切换』 其实大概的场景是这样的:不同的开发环境调用 db0、生产环境调用 db1,但是因为业务原因&#xff0c…...

采集工具-免费采集器下载

在当今信息时代,互联网已成为人们获取信息的主要渠道之一。对于研究者和开发者来说,如何快速准确地采集整个网站数据是至关重要的一环。以下将从九个方面详细探讨这一问题。 确定采集目标 在着手采集之前,明确目标至关重要。这有助于确定采集…...

使用MD5当做文件的唯一标识,这样安全么?

使用MD5作为文件唯一标识符可靠么? 文章目录 使用MD5作为文件唯一标识符可靠么?什么是MD5?MD5的用途MD5作为文件唯一标识的优劣优势劣势 使用MD5作为文件唯一标识的建议其他文件标识算法结束语 什么是MD5? MD5(Messag…...

【算法通关村】链表基础经典问题解析

【算法通关村】链表基础&经典问题解析 一.什么是链表 链表是一种通过指针将多个节点串联在一起的线性结构,每一个节点(结点)都由两部分组成,一个是数据域(用来存储数据),一个是指针域&…...

【华为OD题库-056】矩阵元素的边界值-java

题目 给定一个N * M矩阵,请先找出M个该矩阵中每列元素的最大值,然后输出这M个值中的最小值 补充说明: N和M的取值范围均为: [0,100] 示例1: 输入: [[1,2],[3,4]] 输出: 3 说明: 第一列元素为:1和3,最大值为3 第二列元素为: 2和4,最…...

zabbix_sender——向zabbix交互的sdk

zabbix给我们提供了win32的交互方法。地址为src\zabbix_sender\win32\zabbix_sender.c zabbix_sender_send_values 函数声明为: int zabbix_sender_send_values(const char *address, unsigned short port, const char *source,const zabbix_sender_value_t *values...

JDBC概述(什么是JDBC?JDBC的原理、Mysql和Sql Server入门JDBC操作)

Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍JDBC概述(什么是JDBC?JDBC的原理、Mysql和Sql Server入门JDBC操作)简单知识以及部分理论知识 🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁 &am…...

【android开发-06】android中textview,button和edittext控件的用法介绍

1&#xff0c;TextView控件使用代码参考用例 在Android中&#xff0c;我们通常使用XML来定义布局和设置视图属性。以下是一个TextView的XML布局设置示例&#xff1a; 1.1在res/layout目录下的activity_main.xml文件中定义一个TextView&#xff1a; <TextView android:id…...

【JMeter】BeanShell了解基础知识

1. BeanShell是什么&#xff1f; 完全符合java语法的免费&#xff0c;可嵌入式的脚本语言 2.BeanShell用法 操作变量&#xff0c;使用vars内置对象 String 自定义变量名 vars.get("变量名") 从jmeter中获取变量值并定义一个变量接收vars.put(…...

Unity | 渡鸦避难所-0 | 创建 URP 项目并导入商店资源

0 前言 知识点零零碎碎&#xff0c;没有目标&#xff0c;所以&#xff0c;一起做游戏吧 各位老师如果有什么指点、批评、漫骂、想法、建议、疑惑等&#xff0c;欢迎留言&#xff0c;一起学习 1 创建 3D&#xff08;URP&#xff09;项目 在 Unity Hub 中点击新项目&#xff…...

SQL Server数据库部署

数据库简介 使用数据库的必要性 使用数据库可以高效且条理分明地存储数据&#xff0c;使人们能够更加迅速、方便地管理数据。数据库 具有以下特点。 》可以结构化存储大量的数据信息&#xff0c;方便用户进行有效的检索和访问。 》 可以有效地保持数据信息的一致性&#xff0c…...

YOLOv8界面-目标检测+语义分割+追踪+姿态识别(姿态估计)+界面DeepSort/ByteTrack-PyQt-GUI

YOLOv8-DeepSort/ByteTrack-PyQt-GUI&#xff1a;全面解决方案&#xff0c;涵盖目标检测、跟踪和人体姿态估计 YOLOv8-DeepSort/ByteTrack-PyQt-GUI是一个多功能图形用户界面&#xff0c;旨在充分发挥YOLOv8在目标检测/跟踪和人体姿态估计/跟踪方面的能力&#xff0c;与图像、…...

MiniDumpWriteDump函数生成dmp文件

MiniDumpWriteDump函数生成dmp文件 一&#xff1a;概述二&#xff1a; CreateDump.h三&#xff1a;CreateDump.cpp四&#xff1a;main测试五&#xff1a;winDbg分析 一&#xff1a;概述 v2008及以上版本都可以用。 包含CreateDump.h&#xff0c;CreateDump.cpp文件&#xff0c…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

在 Spring Boot 中使用 JSP

jsp&#xff1f; 好多年没用了。重新整一下 还费了点时间&#xff0c;记录一下。 项目结构&#xff1a; pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...