C#中实现简单的参数存储

前提:小文件,参数配置类信息  ini类型保存

1.调用存储相关的API

调用之前先简单的封装一下:

封装目的:封装后的读函数比原函数入口参数更小,操作更便捷  封装后的写函数比原函数明确了读写失败的BOOL类型返回值

using System;
using System.Text;
using System.IO;
using System.Runtime.InteropServices;


namespace Save
{
    public  class SaveHelper
    {
        #region API函数声明

        [DllImport("kernel32")]//返回0表示失败,非0为成功
        private static extern long WritePrivateProfileString(string section, string key,
            string val, string filePath);  //写操作必要参数 节 键值 数值 路径

        [DllImport("kernel32")]//返回取得字符串缓冲区的长度
        private static extern long GetPrivateProfileString(string section, string key,
            string def, StringBuilder retVal, int size, string filePath);
        //读操作必要参数 节 键值  数值 def:默认值。如果指定的 key 在 section 中不存在,函数将返回此默认值。retVal:一个 StringBuilder 对象,用于存储从 .ini 文件中读取的值。这是一个输出参数。size:retVal 的最大容量。这通常设置为 StringBuilder 的大小。filePath:.ini 文件的完整路径。

        #endregion

        #region 读Ini文件

        /// <summary>
        /// 读取Ini配置信息
        /// </summary>
        /// <param name="Section">区域</param>
        /// <param name="Key">键</param>
        /// <param name="NoText">空字符串</param>
        /// <param name="iniFilePath">文件路径</param>
        /// <returns>值</returns>
        ///定义静态方法,无需实例化直接引用
        public static string ReadIniData(string Section, string Key, string NoText, string iniFilePath)
        {
            if (File.Exists(iniFilePath))    //路径是否存在的判断
            {
                StringBuilder temp = new StringBuilder(1024);//大小为1K的临时变量用于存储
                GetPrivateProfileString(Section, Key, NoText, temp, 1024, iniFilePath);
                return temp.ToString();   //获得的数据作为商场返回值进行返回
            }
            else
            {
                return string.Empty;
            }
        }

        #endregion

        #region 写Ini文件
        /// <summary>
        /// 写入Ini配置信息
        /// </summary>
        /// <param name="Section">区域</param>
        /// <param name="Key">键</param>
        /// <param name="Value">值</param>
        /// <param name="iniFilePath">文件路径</param>
        /// <returns>是否成功</returns>
        ///定义静态类方法 进行写操作,成功返回 True,失败返回False
        public static bool WriteIniData(string Section, string Key, string Value, string iniFilePath)
        {
            if (File.Exists(iniFilePath))
            {
                long OpStation = WritePrivateProfileString(Section, Key, Value, iniFilePath);
                if (OpStation == 0)
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
            else
            {
                return false;
            }
        }

        #endregion
    }
}

2.封装后的API具有通用性,但是存储参数的结构体需要自己按需,下面根据自己的需要进行结构体建立:

 public class ConfigInfo
    {
        //参数1
        public double parameter1 { get; set; }
        //参数2
        public double parameter2 { get; set; }
        //参数3
        public double parameter3 { get; set; }



        //参数4
        public int parameter4 { get; set; }
        //参数5
        public int parameter5 { get; set; }
        //参数6
        public int parameter6 { get; set; }
}

加入从ini文件读的方法的方法:

 public static class   CommonMethods  //创建静态类
    {
        //系统文件配置路径
        public static string SysSetPath = string.Empty;  //静态字符型变量
        //读系统配置文件
        public static ConfigInfo LoadSetings()
        {
            ConfigInfo ObjConfig = new ConfigInfo();
            try
            {
                ObjConfig.parameter1 = Convert.ToDouble(SaveHelper.ReadIniData("参数段1", "参数1", "", SysSetPath));
                ObjConfig.parameter2 = Convert.ToDouble(SaveHelper.ReadIniData("参数段1", "参数2", "", SysSetPath));
                ObjConfig.parameter3 = Convert.ToDouble(SaveHelper.ReadIniData("参数段1", "参数3", "", SysSetPath));
                ObjConfig.parameter4 = Convert.ToInt32(SaveHelper.ReadIniData("参数段2", "参数4", "", SysSetPath));
                ObjConfig.parameter5 = Convert.ToInt32(SaveHelper.ReadIniData("参数段2", "参数5", "", SysSetPath));
                ObjConfig.parameter6 = Convert.ToInt32(SaveHelper.ReadIniData("参数段2", "参数6", "", SysSetPath));


                return ObjConfig;

            }
            catch (Exception)
            {


                return null;

            }

加入写入ini方法:

  private bool SaveConfig()
        {
            //文件是否存在不存在则创建
            if (!File.Exists(CommonMethods.SysSetPath))
            {
                FileInfo fi = new FileInfo(CommonMethods.SysSetPath);
                var di = fi.Directory;
                di.Create();
                FileStream fs = new FileStream(CommonMethods.SysSetPath, FileMode.Create);
                fs.Close();
            }
            bool result = true;
            result &= SaveHelper.WriteIniData("参数段1", "参数1", this.parameter1.Value.ToString(), CommonMethods.SysSetPath);
            result &= SaveHelper.WriteIniData("参数段1", "参数2", this.parameter2.Value.ToString(), CommonMethods.SysSetPath);
            result &= SaveHelper.WriteIniData("参数段1", "参数3", this.parameter3.Value.ToString(), CommonMethods.SysSetPath);
            result &= SaveHelper.WriteIniData("参数段2", "参数4", this.parameter4.Value.ToString(), CommonMethods.SysSetPath);
            result &= SaveHelper.WriteIniData("参数段2", "参数5", this.parameter5.Value.ToString(), CommonMethods.SysSetPath);
            result &= SaveHelper.WriteIniData("参数段2", "参数6", this.parameter6.Value.ToString(), CommonMethods.SysSetPath);

            return result;
        }

节目效果:

需要代码可以私信我

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值