`
hzy3774
  • 浏览: 984460 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

C#简单读写ini文件

 
阅读更多

INI文件其实是一种文本文件,它的构成分为三部分

Section

Key

Value

[section1]
key1=value11
key2=value12
[section2]
key1=value21
key2=value22

 

Windows系统自带的Win32API函数GetPrivateProfileString()WritePrivateProfileString()分别实现了对INI文件的读写操作

所以可以写一个简单的类来读写ini文件,以满足一般应用的配置存取需求:

 class IniFile
    {
        /*
         * 声明API函数
         */
        public string iniPath;
        [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);

        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="iniPath">ini文件路径,默认为当前路径下default.ini</param>
        public IniFile(string iniPath = "./default.ini")
        {
            this.iniPath = iniPath;
        }

        /// <summary>
        /// 写入ini文件
        /// </summary>
        /// <param name="Section">Section</param>
        /// <param name="Key">键</param>
        /// <param name="Value">值</param>
        public void writeIni(string Section, string Key, string Value)
        {
            WritePrivateProfileString(Section, Key, Value, this.iniPath);
        }

        /// <summary>
        /// 写入ini文件,不管section,默认放在default里
        /// </summary>
        /// <param name="Key">键</param>
        /// <param name="Value">值</param>
        public void writeIni(string Key, string Value)
        {
            WritePrivateProfileString("default", Key, Value, this.iniPath);
        }

        /// <summary>
        /// 读取ini文件
        /// </summary>
        /// <param name="Section">Section</param>
        /// <param name="Key">键</param>
        /// <returns>返回的值</returns>
        public string readIni(string Section, string Key)
        {
            StringBuilder temp = new StringBuilder(256);
            int i = GetPrivateProfileString(Section, Key, "", temp, 256, this.iniPath);
            return temp.ToString();
        }

        /// <summary>
        /// 读取section,不管section,默认从default里读取
        /// </summary>
        /// <param name="Key">键</param>
        /// <returns>返回值</returns>
        public string readIni(string Key)
        {
            return readIni("default", Key);
        }

        /// <summary>
        /// 查询ini文件是否存在
        /// </summary>
        /// <returns>是否存在</returns>
        public bool existINIFile()
        {
            return File.Exists(iniPath);
        }
    }

 

 调用方式:

    class Program
    {
        static void Main(string[] args)
        {
            IniFile iniFile = new IniFile("./hello.ini");
            iniFile.writeIni("section1", "key1", "value11");
            iniFile.writeIni("section1", "key2", "value12");
            iniFile.writeIni("section2", "key1", "value21");
            iniFile.writeIni("section2", "key2", "value22");

            iniFile.writeIni("key", "value");

            string str = iniFile.readIni("key");
            Console.WriteLine(str);
            Console.ReadKey();
        }
    }

  

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics