【WPF】二进制文件操作类--对象列表序列化反序列化

这段代码展示了如何在C#中使用BinaryFormatter类进行对象序列化和反序列化,以保存和读取数据采集记录到二进制文件。程序首先检查文件目录是否存在,然后创建或打开文件流,通过二进制格式化器将数据序列化写入或从文件中反序列化读取。如果过程中出现异常,则捕获并返回空列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

namespace NormalizingApp.Lib
{
    public class BinaryFile     //二进制文件操作类
    {
        //序列化文件路径属性设置
        public static string FileName{get;set;}
        /// <summary>
        /// 数据采集记录序列化保存到文件
        /// </summary>
        /// <param name="lst"></param>
        public static void SaveBinary(List<object> lst)
        {
            try
            {
                if (!Directory.Exists(Path.GetDirectoryName(FileName)))//目录不存在,则创建目录
                {
                    Directory.CreateDirectory(Path.GetDirectoryName(FileName));
                }
                FileStream fs = new FileStream(FileName, FileMode.OpenOrCreate);//打开或创建文件流
                BinaryFormatter bf = new BinaryFormatter(); //初始化二进制格式化器
                bf.Serialize(fs, lst);//将列表数据 序列化 写入文件流
                fs.Close();//关闭文件流
            }
            catch
            {
                return;
            }
        }
        /// <summary>
        /// 读取文件并反序列化出结果
        /// </summary>
        /// <returns></returns>
        public static List<object> ReadBinary()  //读取二进制文件,反序列化到列表
        {
            List<object> lst = new List<object>();//初始化列表对象
            if (File.Exists(FileName))//判断文件存在
            {
                try
                {
                    FileStream fs = new FileStream(FileName, FileMode.OpenOrCreate);//打开或创建文件流
                    BinaryFormatter bf = new BinaryFormatter();
                    lst = bf.Deserialize(fs) as List<object>;//反序列化文件流 到列表
                    fs.Close();//关闭文件流
                }
                catch
                {
                    return lst;
                }
            }
            return lst;
        }

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值