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问价的读取操作,希望能帮到有需要的人啊。

你可能感兴趣的:(import)