• C#创建及读取DAT文件案例


    *.DAT 从后缀名上也能理解其中的含义即:data文件,数据文件;这个文件有的可以用记事本工具打开,但是加密后就不一定了。
    很多程序都创建dat文件来保存设定。创建一个只有自己才能解析得dat文件,并且可以读取和写入,写一个类,它可以创建一个只有使用这个类才能解析得dat文件。同时读取或写入数据进dat文件时,也只可以使用这个类来读取写入。简单来说就是这个类是打开读取写入这个dat文件得钥匙!其实用来保存设置的文件后缀名可以各种各样。
    1、创建文件读写类,如下所示
    ///
    /// 加密、解密
    ///
    public class EncrytUtilSeal {
    private static byte[] key = new byte[] { 78, 56, 61, 94, 12, 88, 56, 63, 66, 111, 102, 77, 1, 186, 97, 45 };
    private static byte[] iv = new byte[] { 36, 34, 42, 122, 242, 87, 2, 90, 59, 117, 123, 63, 72, 171, 130, 61 };
    private static IFormatter S_Formatter = null;
    static EncrytUtilSeal() {
    S_Formatter = new BinaryFormatter();//创建一个序列化的对象
    }
    ///
    /// 采用Rijndael128位加密二进制可序列化对象至文件
    ///
    /// 二进制对象
    /// 文件路径
    ///
    public static bool EncryptObject(object para, string filePath)
    {
    //创建.bat文件 如果之前存在.bat文件则覆盖,无则创建
    using (Stream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None))
    {
    RijndaelManaged RMCrypto = new RijndaelManaged();
    CryptoStream csEncrypt = new CryptoStream(fs, RMCrypto.CreateEncryptor(key, iv), CryptoStreamMode.Write);
    S_Formatter.Serialize(csEncrypt, para);//将数据序列化后给csEncrypt
    csEncrypt.Close();
    fs.Close();
    return true;
    }
    }
    ///
    /// 从采用Rijndael128位加密的文件读取二进制对象
    ///
    /// 文件路径
    /// 二进制对象
    public static object DecryptObject(string filePath)
    {
    //打开.bat文件
    using (Stream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read))
    {
    object para;
    RijndaelManaged RMCrypto = new RijndaelManaged();
    CryptoStream csEncrypt = new CryptoStream(fs, RMCrypto.CreateDecryptor(key, iv), CryptoStreamMode.Read);
    para = S_Formatter.Deserialize(csEncrypt); //将csEncrypt反序列化回原来的数据格式;
    csEncrypt.Close();
    fs.Close();
    return para;
    }
    }
    }
    2、在界面中设计读取和写入按钮:
    在这里插入图片描述
    实现点击事件如下所示
    在这里插入图片描述
    3、运行结果如下所示
    在这里插入图片描述
    在这里插入图片描述
    5、读取结果如下所示
    在这里插入图片描述
    6、因为是加密文件,所以打开时乱码,如下所示:
    在这里插入图片描述

  • 相关阅读:
    Python识别验证码----顶象面积验证
    算法+二分查找+冒泡排序+位运算【Interview】
    .Net服务器性能监控,应用耗时统一监控平台
    ElasticSearch 深度分页解决方案
    公司内部配置GitLab,通过SSH密钥来实现免密clone、push等操作
    git clean 命令详解
    postgresql用户与权限管理
    vue3怎么创建项目
    java计算机毕业设计惠济区疫情期间监测管理系统源码+mysql数据库+系统+lw文档+部署
    【原创】程序员团队管理的核心是什么?
  • 原文地址:https://blog.csdn.net/weixin_41883890/article/details/125989790