sunny123456

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  1796 随笔 :: 22 文章 :: 24 评论 :: 226万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

https://www.cnblogs.com/BrightMoon/archive/2013/02/24/2924262.html

复制代码
复制代码
序列化是将对象在内存中的2进制数据写入到bin文件中,
这个操作就需要引入命名空间
using System.Runtime.Serialization.Formatters.Binary;
以下是序列化和反序列化代码

序列化代码:
    /// <summary> /// 保存配置文件 /// </summary> public void SaveFile() {
首先将数据保存到作临时存储用的泛型中 manager.Temp.Clear();
foreach (TreeNode node in this.tvSongList.Nodes) { List<SongInfo> songList = node.Tag as List<SongInfo>; Temp temp = new Temp(); temp.TreeNodeName = node.Text; temp.SongList = songList; manager.Temp.Add(temp); }
打开文件流,创建BinaryFormatter对象
调用BinaryFormatter对象的Serialize方法,传入两个参数(文件流对象,需要序列化的对象)
因为序列化的时候需要用到文件流,因为使用文件流时可能出现异常,所以用try{}catch{}检测异常
try { FileStream fs = new FileStream(@"save.bin", FileMode.Create); BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(fs, manager); fs.Close(); } catch (Exception) { return; } }
反序列化代码:
创建文件流,创建BinaryFormatter对象
调用BinaryFormatter对象的Deserialize方法,传入参数(文件流对象)
将需要Deserialize的返回值强制转换,然后赋值给需要反序列化的对象

因为序列化的时候需要用到文件流,因为使用文件流时可能出现异常,所以用try{}catch{}检测异常
复制代码
复制代码
            try
            {
                FileStream fs = new FileStream(@"save.bin", FileMode.Open);
                BinaryFormatter bf = new BinaryFormatter();
                this.manager = (SongManager)bf.Deserialize(fs);
                fs.Close();
            }
            catch (Exception)
            {
                return;
            } 
复制代码
复制代码

 

 
复制代码
复制代码
posted on   sunny123456  阅读(526)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示