C#读取与写入配置文件

来源:互联网 发布:mac上打开flac 编辑:程序博客网 时间:2024/05/18 20:35

1、视觉系统应用中,经常需要保存很多参数,包括相机配置参数,视觉算法调试参数,一般我们在初始化时都会对这些参数赋予初值,然后在调试过程中,会不断的改变这些参数,虽然系统在运行的过程中会保持这些参数,但是系统一旦重新编译,或者重启都会失去这些参数,那么就需要对这些参数进行相应的保存。一般可以写入.ini文件中,也可以写入.xml中。下面我们将介绍如何对这些参数进行读取和写入。


2、首先要添加一个类,这个类就是实现.ini文件的读写功能。操作如下:


添加OK后,将类的名称改为iniOperate;

3、前期准备,首先需要添加引用,C#中一定要注意这一点,需要使用到哪个类中的方法,就首先必须要引用命名空间,

添加using System.IO;//操作文件时需要用到

using System.Runtime.InteropServices;//添加dll时需要用到

4、添加如下代码到类IniOperate中,

 #region API函数申明
        [DllImport("kernel32")]
        public  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);
        #endregion
        #region 读INI文件
        public  string ReadIniData(string Section, string Key, string NoText, string iniFIlePath)//注意不要用静态的方法。
        {
            if (File.Exists(iniFIlePath))
            {
                StringBuilder temp = new StringBuilder(1024);
                GetPrivateProfileString(Section, Key, NoText, temp, 1024, iniFIlePath);//NoText为当找不到关键字时作为代替数据
                return temp.ToString();
            }
            else
            {
                return String.Empty;
            }
        }
        #endregion
        #region 写INI文件
        public  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
    

5、添加完了类,下面就需要对这个类进行调用。在主应用程序中,实例化一个对象,IniOperate IniOperate=new IniOperate();

在窗口进行加载的时候,对参数进行读取,

 grab_timeout = Convert.ToInt32(IniOperate1.ReadIniData("grab_timeout", "value", "ERROR", "D:/0WGH/CSHARP/HalconProject/Data.ini"));
          brightness = Convert.ToInt32(IniOperate1.ReadIniData("brightness", "value", "ERROR", "D:/0WGH/CSHARP/HalconProject/Data.ini"));
          contrast = Convert.ToInt32(IniOperate1.ReadIniData("contrast", "value", "ERROR", "D:/0WGH/CSHARP/HalconProject/Data.ini"));


对参数进行写入:

  IniOperate1.WriteIniData("grab_timeout", "value", "3005", "D:/0WGH/CSHARP/HalconProject/Data.ini");


6、注意配置文件.ini的格式:

[grab_timeout]
value=3005


[brightness]
value=10002


[contrast]
value=103

如果格式出现问题的话,调试也会出现问题。

7、在读配置文件进行读写的时候,记得每次使用参数之前都应该先刷新一次数据。

0 0
原创粉丝点击