读写ini文件

INI文件就是扩展名为“ini”的文件。在Windows系统中,INI文件是很多,最重要的就是“System.ini”、“System32.ini”和“Win.ini”。该文件主要存放用户所做的选择以及系统的各种参数。用户可以通过修改INI文件,来改变应用程序和系统的很多配置。但自从Windows 95的退出,在Windows系统中引入了注册表的概念,INI文件在Windows系统的地位就开始不断下滑,这是因为注册表的独特优点,使应用程序和系统都把许多参数和初始化信息放进了注册表中。但在某些场合,INI文件还拥有其不可替代的地位。下面是C#是如何对INI进行读写操作
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Runtime.InteropServices; 

namespace Update
{
    class IniFile
    {
        private string fileName;
        [DllImport("kernel32")]
        private static extern int GetPrivateProfileInt(
           string lpAppName,// 指向包含 Section 名称的字符串地址
           string lpKeyName,// 指向包含 Key 名称的字符串地址
           int nDefault,// 如果 Key 值没有找到,则返回缺省的值是多少
           string lpFileName
           );
        [DllImport("kernel32")]
        private static extern int GetPrivateProfileString(
           string lpAppName,// 指向包含 Section 名称的字符串地址
           string lpKeyName,// 指向包含 Key 名称的字符串地址
           string lpDefault,// 如果 Key 值没有找到,则返回缺省的字符串的地址
           StringBuilder lpReturnedString,// 返回字符串的缓冲区地址
           int nSize,// 缓冲区的长度
           string lpFileName
           );
        [DllImport("kernel32")]
        private static extern bool WritePrivateProfileString(
           string lpAppName,// 指向包含 Section 名称的字符串地址
           string lpKeyName,// 指向包含 Key 名称的字符串地址
           string lpString,// 要写的字符串地址
           string lpFileName
           );

        public IniFile(string filename)
        {
            fileName = filename;
        }
        public int GetInt(string section, string key, int def)
        {
            return GetPrivateProfileInt(section, key, def, fileName);
        }
        public string GetString(string section, string key, string def)
        {
            StringBuilder temp = new StringBuilder(1024);
            GetPrivateProfileString(section, key, def, temp, 1024, fileName);
            return temp.ToString();
        }
        public void WriteInt(string section, string key, int iVal)
        {
            WritePrivateProfileString(section, key, iVal.ToString(), fileName);
        }
        public void WriteString(string section, string key, string strVal)
        {
            WritePrivateProfileString(section, key, strVal, fileName);
        }
        public void DelKey(string section, string key)
        {
            WritePrivateProfileString(section, key, null, fileName);
        }
        public void DelSection(string section)
        {
            WritePrivateProfileString(section, null, null, fileName);
        }
    
    }
}

原文地址:https://www.cnblogs.com/elzero/p/817946.html