C# 配置文件ini操作类

// [ DllImport ( "kernel32" ) ] 
//private static extern long WritePrivateProfileString ( string section , string key , string val , string filePath ) ;
//参数说明:section:INI文件中的段落;key:INI文件中的关键字;val:INI文件中关键字的数值;filePath:INI文件的完整的路径和名称。
//C#申明INI文件的读操作函数GetPrivateProfileString():
//[ DllImport ( "kernel32" ) ]
//private static extern int GetPrivateProfileString ( string section , string key , string def , StringBuilder retVal , int size , string filePath ) ;
//参数说明:section:INI文件中的段落名称;key:INI文件中的关键字;
//def:无法读取时候时候的缺省数值;retVal:读取数值;size:数值的大小;filePath:INI文件的完整路径和名称。
//
//第一种,简单操作类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; using System.IO; namespace ConsoleApplication1 { class INIhelp { [DllImport("kernel32")] private static extern long WritePrivateProfileString(string section, string key, string val, string filepath); [DllImport("kernel32")] private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retval, int size, string filePath); //ini文件名称 private static string inifilename = "Config.ini"; //获取ini文件路径 private static string inifilepath = Directory.GetCurrentDirectory() + "\\" + inifilename; public static string GetValue(string key) { StringBuilder s = new StringBuilder(1024); GetPrivateProfileString("CONFIG",key,"",s,1024,inifilepath); return s.ToString(); } public static void SetValue(string key,string value) { try { WritePrivateProfileString("CONFIG", key, value, inifilepath); } catch (Exception ex) { throw ex; } } } } // 使用 static void Main(string[] args) { INIhelp.SetValue("data", "abcdefg"); INIhelp.SetValue("哈哈", "123456"); INIhelp.SetValue("呵呵", "123456"); INIhelp.SetValue("数据库", "123456"); INIhelp.SetValue("123", "123456"); Console.WriteLine("写入完成"); Console.ReadLine(); string s = INIhelp.GetValue("data"); Console.WriteLine(s); string a = INIhelp.GetValue("哈哈"); Console.WriteLine(a); string b = INIhelp.GetValue("123"); Console.WriteLine(b); Console.ReadLine();
//删除,设置为null即可
      INIhelp.SetValue("1", null);
} //第二种 完全操作类 using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; namespace MSFramework.Common { /// <summary> /// ini文件类 /// </summary> public class IniFile { private string m_FileName; public string FileName { get { return m_FileName; } set { m_FileName = value; } } [DllImport("kernel32.dll")] private static extern int GetPrivateProfileInt( string lpAppName, string lpKeyName, int nDefault, string lpFileName ); [DllImport("kernel32.dll")] private static extern int GetPrivateProfileString( string lpAppName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, int nSize, string lpFileName ); [DllImport("kernel32.dll")] private static extern int WritePrivateProfileString( string lpAppName, string lpKeyName, string lpString, string lpFileName ); /// <summary> /// 构造函数 /// </summary> /// <param name="aFileName">Ini文件路径</param> public IniFile(string aFileName) { this.m_FileName = aFileName; } /// <summary> /// 构造函数 /// </summary> public IniFile() { } /// <summary> /// [扩展]读Int数值 /// </summary> /// <param name="section">节</param> /// <param name="name">键</param> /// <param name="def">默认值</param> /// <returns></returns> public int ReadInt(string section, string name, int def) { return GetPrivateProfileInt(section, name, def, this.m_FileName); } /// <summary> /// [扩展]读取string字符串 /// </summary> /// <param name="section">节</param> /// <param name="name">键</param> /// <param name="def">默认值</param> /// <returns></returns> public string ReadString(string section, string name, string def) { StringBuilder vRetSb = new StringBuilder(2048); GetPrivateProfileString(section, name, def, vRetSb, 2048, this.m_FileName); return vRetSb.ToString(); } /// <summary> /// [扩展]写入Int数值,如果不存在 节-键,则会自动创建 /// </summary> /// <param name="section">节</param> /// <param name="name">键</param> /// <param name="Ival">写入值</param> public void WriteInt(string section, string name, int Ival) { WritePrivateProfileString(section, name, Ival.ToString(), this.m_FileName); } /// <summary> /// [扩展]写入String字符串,如果不存在 节-键,则会自动创建 /// </summary> /// <param name="section">节</param> /// <param name="name">键</param> /// <param name="strVal">写入值</param> public void WriteString(string section, string name, string strVal) { WritePrivateProfileString(section, name, strVal, this.m_FileName); } /// <summary> /// 删除指定的 节 /// </summary> /// <param name="section"></param> public void DeleteSection(string section) { WritePrivateProfileString(section, null, null, this.m_FileName); } /// <summary> /// 删除全部 节 /// </summary> public void DeleteAllSection() { WritePrivateProfileString(null, null, null, this.m_FileName); } /// <summary> /// 读取指定 节-键 的值 /// </summary> /// <param name="section"></param> /// <param name="name"></param> /// <returns></returns> public string IniReadValue(string section, string name) { StringBuilder strSb = new StringBuilder(256); GetPrivateProfileString(section, name, "", strSb, 256, this.m_FileName); return strSb.ToString(); } /// <summary> /// 写入指定值,如果不存在 节-键,则会自动创建 /// </summary> /// <param name="section"></param> /// <param name="name"></param> /// <param name="value"></param> public void IniWriteValue(string section, string name, string value) { WritePrivateProfileString(section, name, value, this.m_FileName); } } } //使用 IniFile myIni = new IniFile(Environment.CurrentDirectory + "\\Config.ini"); myIni.WriteInt("Tsection", "tName", 89); Console.WriteLine(myIni.ReadString("System", "MainFormName", "")); Console.WriteLine(myIni.ReadString("DbServer", "DbFile", "")); myIni.WriteString("DbServer", "DbFile", @"E:\Work\test2.db"); Console.WriteLine(myIni.ReadString("DbServer", "DbServer", "")); Console.WriteLine(myIni.ReadString("DbServer", "DbFile", ""));