CSharp操作ini文件完美附带ini介绍.docx
CSharp操作ini文件完美附带ini介绍CSharp操作ini文件 Ini文件简介 .ini 文件是Initialization File的缩写,即初始化文件。是windows的系统配置文件所采用的存储格式,统管windows的各项配置,一般用户就用windows提供的各项图形化管理界面就可实现相同的配置了,但在某些情况,还是要直接编辑.ini才方便,一般只有很熟悉windows才能去直接编辑。开始时用于WIN3X下面,WIN95用注册表代替,以及后面的内容表示一个节,相当于注册表中的键。除了windows现在很多其他操作系统下面的应用软件也有.ini文件,用来配置应用软件以实现不同用户的要求。一般不用直接编辑这些.ini文件,应用程序的图形界面即可操作以实现相同的功能。它可以用来存放软件信息,注册表信息,配置信息等。 Ini文件格式 INI文件由节、键、值组成。(ini文件内容不区分大小写) 节(段落) section 参数(键=值) name=value 注解 注解使用分号(英文分号)表示。在分号后面的文字,直到该行结尾都全部为注解。 示例 以下为一个简单的ini文件(abc.ini)的内容(ini文件可以用记事本打开、修改) Section1 KeyName1=value1 KeyName2=value2 ;这里是注释 Section2 Name KeyName21=value21 KeyName22=value22 其中:Section1、Section2 Name用来表示一个段落。因为INI文件可能是项目中共用的,所以使用段名来区分不同用途的参数区。例如:Section1表示传感器灵敏度参数区;Section2 Name表示测量通道参数区等等。 KeyName1=value1用来表示一个参数名和值。比如:7033=50 7034=51 其中: 7033表示某传感器名,50表示它的灵敏度值。7034表示另一只传感器名,51表示它的灵敏度值。 C#操作ini文件完整代码并详细注释 使用时,只需IniFunc.方法名(实参列表)即可 using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Runtime.InteropServices; namespace CommFunc / <summary> / 操作ini文件 / </summary> public class IniFunc / <summary> / 读操作读取字符串 / </summary> / <param name="section">要读取的段落名</param> / <param name="key">要读取的键</param> / <param name="defVal">读取异常的情况下的缺省值;如果Key值没有找到,则返回缺省的字符串的地址</param> / <param name="retVal">key所对应的值,如果该key不存在则返回空值</param> / <param name="size">返回值允许的大小</param> / <param name="filePath">INI文件的完整路径和文件名</param> / <returns></returns> DllImport("kernel32") private static extern int GetPrivateProfileString(string section, string key, string defVal, StringBuilder retVal, int size, string filePath); / <summary> / 读操作读取整数 / </summary> / <param name="lpAppName">指向包含Section 名称的字符串地址</param> / <param name="lpKeyName">指向包含Key 名称的字符串地址</param> / <param name="nDefault">如果Key 值没有找到,则返回缺省的值是多少</param> / <param name="lpFileName">INI文件的完整路径和文件名</param> / <returns>返回获得的整数值</returns> DllImport("kernel32") private static extern int GetPrivateProfileInt(string lpAppName, string lpKeyName, int nDefault, string lpFileName); / <summary> / 写操作 / </summary> / <param name="section">要写入的段落名</param> / <param name="key">要写入的键,如果该key存在则覆盖写入</param> / <param name="val">key所对应的值</param> / <param name="filePath">INI文件的完整路径和文件名</param> / <returns></returns> DllImport("kernel32") private static extern bool WritePrivateProfileString(string section, string key, string val, string filePath); / <summary> / 获得整数值 / </summary> / <param name="section">要读取的段落名</param> / <param name="key">要读取的键</param> / <param name="def">如果Key 值没有找到,则返回缺省的值是多少</param> / <param name="fileName">INI文件的完整路径和文件名</param> / <returns></returns> public static int GetInt(string section, string key, int def, string fileName) return GetPrivateProfileInt(section, key, def, fileName); / <summary> / 获得字符串值,默认返回长度为1024 / </summary> / <param name="section">要读取的段落名</param> / <param name="key">要读取的键</param> / <param name="def">如果Key 值没有找到,返回的默认值</param> / <param name="fileName">INI文件的完整路径和文件名</param> / <returns></returns> public static string GetString(string section, string key, string def, string fileName) StringBuilder temp = new StringBuilder(1024); GetPrivateProfileString(section, key, def, temp, 1024, fileName); return temp.ToString; / <summary> / 获得字符串值,返回长度用户自定义 / </summary> / <param name="section">要读取的段落名</param> / <param name="key">要读取的键</param> / <param name="def">如果Key 值没有找到,返回的默认值</param> / <param name="fileName">INI文件的完整路径和文件名</param> / <param name="size">用户自定义返回的字符串长度</param> / <returns></returns> public static string GetString(string section, string key, string def, string fileName, int size) StringBuilder temp = new StringBuilder; GetPrivateProfileString(section, key, def, temp, size, fileName); return temp.ToString; / <summary> / 写整数值 / </summary> / <param name="section">要写入的段落名</param> / <param name="key">要写入的键,如果该key存在则覆盖写入</param> / <param name="iVal">key所对应的值</param> / <param name="fileName">INI文件的完整路径和文件名</param> public static void WriteInt(string section, string key, int iVal, string fileName) WritePrivateProfileString(section, key, iVal.ToString, fileName); / <summary> / 写字符串的值 / </summary> / <param name="section">要写入的段落名</param> / <param name="key">要写入的键,如果该key存在则覆盖写入</param> / <param name="strVal">key所对应的值</param> / <param name="fileName">INI文件的完整路径和文件名</param> public static void WriteString(string section, string key, string strVal, string fileName) WritePrivateProfileString(section, key, strVal, fileName); / <summary> / 删除指定的key / </summary> / <param name="section">要写入的段落名</param> / <param name="key">要删除的键</param> / <param name="fileName">INI文件的完整路径和文件名</param> public static void DelKey(string section, string key, string fileName) WritePrivateProfileString(section, key, null, fileName); / <summary> / 删除指定的段落 / </summary> / <param name="section">要删除的段落名</param> / <param name="fileName">INI文件的完整路径和文件名</param> public static void DelSection(string section, string fileName) WritePrivateProfileString(section, null, null, fileName); /本文ini介绍来自百度百科,代码属于自己整理并测试通过。