C# 写入二进制文件

2023-11-06

试验1

using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

namespace 创建二进制文件
{
    [Serializable]
    class Struct
    {
        public string a { get; set; }
        public string b { get; set; }
        public int s { get; set; }

    }
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("创建二进制文件");
            Save();
            Read();
            Console.ReadKey();
        }
        static void Save()
        {
            Struct mystruct = new Struct();
            mystruct.a = "123";
            mystruct.b = "ABCD";
            mystruct.s = 27;
            using (FileStream fileStream = new FileStream(@"abc.txt", FileMode.OpenOrCreate))
            {
                BinaryFormatter binaryFormatter = new BinaryFormatter();
                binaryFormatter.Serialize(fileStream, mystruct);
            }
        }
        static void Read()
        {
            using (FileStream fileStream = new FileStream(@"abc.txt", FileMode.OpenOrCreate))
            {
                BinaryFormatter binaryFormatter = new BinaryFormatter();
                Struct mystruct = binaryFormatter.Deserialize(fileStream) as Struct;
                Console.WriteLine(mystruct.a);
                Console.WriteLine(mystruct.b);
                Console.WriteLine(mystruct.s);
            }
        }
    }
}

试验2-序列化列表

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Threading.Tasks;

namespace 创建二进制文件
{
    [Serializable]
    public class A
    {
       
        public A(int a)
        {
            this.a = a;
        }
        public int a;
    }
    class 序列化列表
    {
        static void Main(string[] args)
        {
            Console.WriteLine("创建二进制文件-list");
            序列化列表 p = new 序列化列表();
            p.mian();
            Console.ReadKey();
        }
        public void mian() {
            Save();
            Read();
        }
        public void Save()
        {
            List<A> list = new List<A>();
            for(int i = 0; i < 5; i++)
            {
                A a = new A(i);
                list.Add(a);
            }
            using (FileStream fileStream = new FileStream(@"a.txt", FileMode.OpenOrCreate))
            {
                BinaryFormatter binaryFormatter = new BinaryFormatter();
                binaryFormatter.Serialize(fileStream, list);
            }
        }
        static void Read()
        {
            using (FileStream fileStream = new FileStream(@"a.txt", FileMode.OpenOrCreate))
            {
                BinaryFormatter binaryFormatter = new BinaryFormatter();
                List<A> list = binaryFormatter.Deserialize(fileStream) as List<A>;
                for (int i = 0; i < 5; i++)
                {
                    Console.WriteLine(list[i].a);
                }
            }
        }
    }
}

试验3-复杂对象

using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

namespace 创建二进制文件
{
    [Serializable]
    public class B
    {
        public B(int b)
        {
            a = b;
        }
        public int a;
    }

    [Serializable]
    public class C
    {
        public List<B> bs = new List<B>();
        public int b;
    }
    class 序列化综合对象
    {
        static void Main(string[] args)
        {
            Console.WriteLine("创建二进制文件-综合对象");
            序列化综合对象 p = new 序列化综合对象();
            p.mian();
            Console.ReadKey();
        }
        public void mian()
        {
            Save();
            Read();
        }
        public void Save()
        {
            C c = new C();
            c.b = 5;
           
            for (int i = 0; i < 5; i++)
            {
                B b = new B(i);
                c.bs.Add(b);
            }
            using (FileStream fileStream = new FileStream(@"b.txt", FileMode.OpenOrCreate))
            {
                BinaryFormatter binaryFormatter = new BinaryFormatter();
                binaryFormatter.Serialize(fileStream, c);
            }
        }
        static void Read()
        {
            using (FileStream fileStream = new FileStream(@"b.txt", FileMode.OpenOrCreate))
            {
                BinaryFormatter binaryFormatter = new BinaryFormatter();
                C c = binaryFormatter.Deserialize(fileStream) as C;
                for (int i = 0; i < 5; i++)
                {
                    Console.WriteLine(c.bs[i].a);
                }
            }
        }
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 写入二进制文件 的相关文章

随机推荐

  • ThreadX 内部系统时钟服务

    ThreadX中 有两个函数可以获取和设置内部系统时钟服务 tx time get 获取当前时间 tx time set 设置当前时间 tx time get 获取当前时间 原型 ULONG tx time get VOID 描述 这项服务
  • VUE安装问题

    启动应用 npm run serve 默认进入为 http localhost 8080 由于部署在虚拟化linux上 需远程访问 需将localhost修改为服务器IP 1 修改package json 新增host 0 0 0 0 2
  • 【Flutter 系列——1】Flutter环境搭建及配置这一篇就够了(Windows)

    最近正式入坑Flutter 首先从环境搭建开始 看了网上好多关于Windows环境搭建的资料 基本都是按官方文档写的 看完的感受是 还不如直接去看官方文档 官方英文文档传送门 Get Started Install on Windows 本
  • 数据要素流通视角下数据安全保障研究报告

    报告围绕数据要素流通视角下流通数据 流通活动 流通设施的安全需求 分析健全我国数据安全保障体系的推进思路 并从分类分级 流通环境 安全技术 协同共治等方面提出措施建议 为完善我国数据要素流通视角下数据安全保障提供有益参考与借鉴 关注公众号
  • WinCE5.0显卡驱动修改笔记

    WinCE5 0显卡驱动修改笔记公司前段时间让我在Geode上安装一个CE5 0 我把系统安装好之后发现显卡驱动不支持开发板的屏幕 我们的屏幕是800x480的 所以我只能自己动手写修改了一下驱动让它能够支持800x480 一下是我对驱动的
  • python报错code for hash md5 was not found解决方案

    因为开发机服务器不能上网 只能手动安装Python 但是装完后import hashlib出现异常 出现不支持sha256 sha512 md5等错误 现象如下 gt gt gt import hashlib ERROR root code
  • 排序算法之时间复杂度为O(N^2)的算法

    背景知识 排序算法算是比较基础的算法了 但是在面试过程中偶尔也会被问到 虽然很多语言都内置了排序函数 例如php的sort函数等等 但是还是有必要聊聊排序算法 这篇文章中将介绍时间复杂度为O N 2 的几个排序算法 本文基于从小到大排序讲解
  • react面试题(30个)

    1 React Native相对于原生的ios和Android有哪些优势 react native一套代码可以开发出跨平台app 减少了人力 节省了时间 避免了 iOS 与 Android 版本发布的时间差 开发新功能可以更迅速 等等 2
  • go语言后端调用以太坊rpc

    任务要求 使用golang作为后端语言 获取eth 私链 中的账户信息以及创建新的账号 1 启动geth geth identity aaron datadir data0 rpcport 8545 rpccorsdomain port 3
  • 分布式工程团队建设的十大教训

    转自 https www zybuluo com lsmn note 1059823 摘要 人才招聘 培养并促进分布式工程团队的发展并非一日之功 但是值得投资 Bruno提出了一些非常重要的见解 揭示了如何让团队全力以赴 而不管地理位置在哪
  • 初识springBoot

    springboot初学应该了解哪些 了解更多请看Spring Boot 初识 系列 会持续更新 Spring Boot 初识丨一 入门实战 Spring Boot 初识丨二 maven Spring Boot 初识丨三 starter S
  • springcloud搭建标配配置(参考)

    文章目录 架构图 shop parent 后端父项目 pom xml shop common 公共项目 pom xml CommonConstants UserInfo 用户对象 BusinessException 自定义异常 Common
  • SpringBoot+WebSocket+Netty实现消息推送

    实现思路 前端使用webSocket与服务端创建连接的时候 将用户ID传给服务端 服务端将用户ID与channel关联起来存储 同时将channel放入到channel组中 如果需要给所有用户发送消息 直接执行channel组的writeA
  • FusionSphere华为服务器虚拟化解决方案定位、架构、原理、应用场景

    目录 定位 应用场景 架构 原理 定位 华为fusion sphere虚拟化套件是业界领先的虚拟化解决方案 能够帮助客户解决数据中心基础设施的资源利用率低 业务上线周期时间长 数据中心能耗高等问题 应用场景 1 从应用侧来看 可应用于帮助客
  • 配置控制(自用)

    wd 123123 snh 123123
  • android开发之代理Window.Callback

    Window Callback是window类的一个内部接口 该接口包含了一系列类似于dispatchXXX和onXXX的接口 当window接收到外界状态改变的通知时 就会回调其中的相应方法 比如 当用户点击某个控件时 就会回调Windo
  • enncy-admin ant design vue 后台管理系统脚手架

    github 项目地址 https github com enncy enncy admin vue3 版本的请看我的另一个项目 https github com enncy funny blog admin 在 template 分支你可
  • Hyper-V服务开启or关闭

    1 概念 Hyper V服务是一个微软的虚拟机 所以如果要在windows上启动虚拟机的话 先需要把Hyper V服务功能关闭 2 Hyper V服务关闭 以管理员身份运行命令提示符 执行以下命令 bcdedit set hyperviso
  • BSN-DDC 基础网络关键知识点(五)跨链机制、官方 SDK 说明、开发资料汇总

    id BSN 2021 公众号 BSN研习社 2022年1月25日 区块链服务网络发展联盟 简称 BSN联盟 上线推出了 BSN DDC基础网络 并进入试商用阶段 同时 BSN DDC官网门户 ddc bsnbase com 上线发布 供D
  • C# 写入二进制文件

    试验1 using System using System IO using System Runtime Serialization Formatters Binary namespace 创建二进制文件 Serializable cla