C# 操作ini配置文件帮助类

来源:互联网 发布:java权限控制 编辑:程序博客网 时间:2024/04/30 01:22

.NET Framework 类库未提供读写ini文件的相应类,不过可以使用WinAPI来处理INI文件的读写,代码很简单。

 

首先有两个API函数需放在你的class中且只能如此,放在method或(class外namespace内),都会出现编译错误:

 

        [DllImport("kernel32")]
        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);

 

  WritePrivateProfileString方法说明:

  功能:将信息写入ini文件

  返回值:long,如果为0则表示写入失败,反之成功。

  参数1(section):写入ini文件的某个小节名称(不区分大小写)。

  参数2(key):上面section下某个项的键名(不区分大小写)。

  参数3(val):上面key对应的value

  参数4(filePath):ini的文件名,包括其路径(example: "c:/config.ini")。如果没有指定路径,仅有文件名,系统会自动在windows目录中查找是否有对应的ini文件,如果没有则会自动在当前应用程序运行的根目录下创建ini文件。

 

GetPrivateProfileString方法使用说明:

  功能:从ini文件中读取相应信息

  返回值:返回所取信息字符串的字节长度

  参数1(section):某个小节名(不区分大小写),如果为空,则将在retVal内装载这个ini文件的所有小节列表。

  参数2(key):欲获取信息的某个键名(不区分大小写),如果为空,则将在retVal内装载指定小节下的所有键列表。

  参数3(def):当指定信息,未找到时,则返回def,可以为空。

  参数4(retVal):一个字串缓冲区,所要获取的字符串将被保存在其中,其缓冲区大小至少为size。

  参数5(size):retVal的缓冲区大小(最大字符数量)。

  参数6(filePath):指定的ini文件路径,如果没有路径,则在windows目录下查找,如果还是没有则在应用程序目录下查找,再没有,就只能返回def了。

 

        #region 读INI文件        

        /// <summary>
       
/// 读INI文件
       
/// </summary>
       
/// <param name="Section"></param>
       
/// <param name="Key"></param>
       
/// <param name="inipath"></param>
       
/// <returns></returns>
        public static string readINI(string Section, string Key, string inipath)
        {
            StringBuilder temp
= new StringBuilder(500);
            long
i = GetPrivateProfileString(Section, Key, "", temp, 500, inipath);
           
return temp.ToString();
        }
       
#endregion

       
#region 写INI文件
       
/// <summary>
       
/// 写INI文件
       
/// </summary>
       
/// <param name="Section"></param>
       
/// <param name="Key"></param>
       
/// <param name="Value"></param>
       
/// <param name="inipath"></param>
        public static void writeINI(string Section, string Key, string Value, string inipath)
        {
            WritePrivateProfileString(Section, Key, Value, inipath);
        }
       
#endregion

 

原创粉丝点击