C#操作ini文件

namespace System.Base
{
    /// <summary>
    /// 操作INI文件类
    /// </summary>
    ///<![CDATA[作者:深蓝蝴蝶]]>
    public class iniFile
    {
        private string fileName;
        [System.Runtime.InteropServices.DllImport("kernel32")]
        private static extern int GetPrivateProfileInt(
           string lpAppName,// 指向包含 Section 名称的字符串地址
           string lpKeyName,// 指向包含 Key 名称的字符串地址
           int nDefault,// 如果 Key 值没有找到,则返回缺省的值是多少
           string lpFileName
           );
        [System.Runtime.InteropServices.DllImport("kernel32")]
        private static extern int GetPrivateProfileString(
           string lpAppName,// 指向包含 Section 名称的字符串地址
           string lpKeyName,// 指向包含 Key 名称的字符串地址
           string lpDefault,// 如果 Key 值没有找到,则返回缺省的字符串的地址
           System.Text.StringBuilder lpReturnedString,// 返回字符串的缓冲区地址
           int nSize,// 缓冲区的长度
           string lpFileName
           );
        [System.Runtime.InteropServices.DllImport("kernel32")]
        private static extern bool WritePrivateProfileString(
           string lpAppName,// 指向包含 Section 名称的字符串地址
           string lpKeyName,// 指向包含 Key 名称的字符串地址
           string lpString,// 要写的字符串地址
           string lpFileName
           );

        /// <summary>
        /// 载入INI文件
        /// </summary>
        /// <param name="filename">
        /// ini文件名
        /// </param>
        public void IniFile(string filename)
        {
            fileName = filename;
        }

        /// <summary>
        /// 获得INI文件的某一键的数值
        /// </summary>
        /// <param name="section">
        /// INI文件的章节
        /// </param>
        /// <param name="key">
        /// INI文件的键名
        /// </param>
        /// <param name="def">
        /// 该键名无值时的默认值
        /// </param>
        public int GetInt(string section, string key, int def)
        {
            return GetPrivateProfileInt(section, key, def, fileName);
        }

        /// <summary>
        /// 获得INI文件的某一键的字符串
        /// </summary>
        /// <param name="section">
        /// INI文件的章节
        /// </param>
        /// <param name="key">
        /// INI文件的键名
        /// </param>
        /// <param name="def">
        /// 该键名无值时的默认值
        /// </param>
        public string GetString(string section, string key, string def)
        {
            System.Text.StringBuilder temp = new System.Text.StringBuilder(1024);
            GetPrivateProfileString(section, key, def, temp, 1024, fileName);
            return temp.ToString();
        }

        /// <summary>
        /// 设置INI文件的某一键的数值
        /// </summary>
        /// <param name="section">
        /// INI文件的章节
        /// </param>
        /// <param name="key">
        /// INI文件的键名
        /// </param>
        /// <param name="iVal">
        /// INI文件的键值
        /// </param>
        public void WriteInt(string section, string key, int iVal)
        {
            WritePrivateProfileString(section, key, iVal.ToString(), fileName);
        }

        /// <summary>
        /// 设置INI文件的某一键的字符串
        /// </summary>
        /// <param name="section">
        /// INI文件的章节
        /// </param>
        /// <param name="key">
        /// INI文件的键名
        /// </param>
        /// <param name="strVal">
        /// INI文件的键值
        /// </param>
        public void WriteString(string section, string key, string strVal)
        {
            WritePrivateProfileString(section, key, strVal, fileName);
        }

        /// <summary>
        /// 删除某一个键
        /// </summary>
        /// <param name="section">
        /// INI文件的章节
        /// </param>
        /// <param name="key">
        /// INI文件的键名
        /// </param>
        public void DelKey(string section, string key)
        {
            WritePrivateProfileString(section, key, null, fileName);
        }

        /// <summary>
        /// 删除某一个章节
        /// </summary>
        /// <param name="section">
        /// INI文件的章节
        /// </param>
        public void DelSection(string section)
        {
            WritePrivateProfileString(section, null, null, fileName);
        }

        static void Main(string[] args)
        {
            System.Base.iniFile ini = new System.Base.iniFile();
            ini.IniFile("E:\\a.ini");

            ini.WriteString("ad1", "username", "sa1");
            ini.WriteString("ad1", "ad", "sdda");
            ini.WriteString("ad1", "eer", "111");
            ini.WriteString("ad1", "d", "null");

            int str = ini.GetInt("ad2", "eer", 1);
            string str2 = ini.GetString("ad2", "ad", "");

            Console.Write(str);
            Console.Write(str2);
            Console.Read();
        }
    }
}

posted @ 2011-10-21 08:47  小`曲  阅读(806)  评论(0)    收藏  举报