c# 利用动态库DllImport("kernel32")读写ini文件(提供Dmo下载)

c# 利用动态库DllImport("kernel32")读写ini文件

  自从读了设计模式,真的会改变一个程序员的习惯。我觉得嘛,经验也可以从一个人的习惯看得出来,看他的代码编写习惯能看出一个程序员的经验。说啥呢,为啥又会说说设计模式去了呢,好吧,咱是来讨论读写ini文件的。
  为什么要来讨论读写ini文件呢,难道有数据库我们就不用读写文件了吗,什么数据都从数据库读取出来吗,有些东西是根据客户的习惯,就没必要去读取数据库了,或者说,比如你要做一个记住密码的功能,如果在web端,你还可以用cookie这东西,但是要是winform呢,这时候ini文件就可以派上用场了。我们可以把用户和密码存在ini文件里。
  ini的格式由节、键、值组成,例:节[section] 参数(键=值) name=value。当然,一个节里面可以有几对参数。

先来看INI文件操作类代码:

/// <summary>
    /// INI文件操作类 
    /// </summary>
    public class INIClass
    {
        [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>
        /// ini文件路径
        /// </summary>
        public string inipath;
        public INIClass()
        { }
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="INIPath">ini文件路径</param>
        public INIClass(string INIPath)
        {
            this.inipath = INIPath;
        }
        /// <summary>
        /// 写入INI文件
        /// </summary>
        /// <param name="section">项目名称(如[TypeName])</param>
        /// <param name="key"></param>
        /// <param name="value"></param>
        public void IniWriteValue(string section, string key, string value)
        {
            WritePrivateProfileString(section, key, value, this.inipath);
        }
        /// <summary>
        /// 读出INI文件
        /// </summary>
        /// <param name="section">项目名称(如[TypeName])</param>
        /// <param name="key"></param>
        /// <returns>string</returns>
        public string IniReadValue(string section, string key)
        {
            StringBuilder temp = new StringBuilder(500);
            int i = GetPrivateProfileString(section, key, "", temp, 500, this.inipath);
            return temp.ToString();
        }
        /// <summary>
        /// 验证文件是否存在
        /// </summary>
        /// <returns>bool</returns>
        public bool ExistINIFile()
        {
            return File.Exists(this.inipath);
        }
    }

下面是运行实例代码:

 public class IniClassDemo
    {
        private static readonly string filePath = @"document/testdemo.ini";
        INIClass iC = new INIClass(filePath);
        //判断文件是否存在
        public bool IsExist()
        {
            return iC.ExistINIFile();
        }
        //写入INI文件
        public void IniWrite(string section,string key,string value)
        {
            iC.IniWriteValue(section, key, value);
        }
        //读取INI文件内容
        public string IniRead(string section,string key)
        {
            string temp = iC.IniReadValue(section, key);
            return temp;
        }
        public void GoTo()
        {
            if (IsExist())
            {
                Console.WriteLine("文件存在 ");
                IniWrite("test01", "aib", "gdaib");
                Console.WriteLine("写入文件完毕,section=test01,key=aib,value=gdaib");
                Console.WriteLine("读取刚写的文件,内容为: " + IniRead("test01", "aib"));
            }
            else
            {
                Console.WriteLine("文件不存在!");
            }
        }
        
    }

我用的是控制台程序,然后再Program里
    class Program
    {
        static void Main(string[] args)
        {
            IniClassDemo icdemo = new IniClassDemo();
            icdemo.GoTo();
        }
    }

  上面就是实现对Ini问价的读取操作,希望能帮到有需要的人啊。

原文地址:https://www.cnblogs.com/zknu/p/3397326.html