ini文件
[section1]
key1 = value1
key2 = value2
[section2]
key1 = value1
key2 = value2
public class IniFileHelper { /*参数 * 1,节:若传入null,第4个参数将会获得所有的section name * 2,key;若传入null,第4个参数将会获得指定的section下的所有的key name * 3,ini文件不存在指定key时,默认的返回的value,一般设置成空字符串 * 4,value * 5,value的长度,应该设置成不小于ini文件中最长的value字符串长度 * 6,要读取的ini文件的路径 * 返回值 * 读到的value的长度:key不存在或key对应的value为空,读到的为0 */ [DllImport("kernel32")] private static extern int GetPrivateProfileString(string sectionName, string key, string defaultValue, byte[] returnBuf, int size, string iniFilePath); /*参数 * 1,节 * 2,key,若传入null,则会移除指定的section * 3,value,若传入null,则会移除指定的key * 4,ini文件的路径 */ [DllImport("kernel32")] private static extern long WritePrivateProfileString(string section, string key, string value, string iniFilePath); /*功能 * 返回ini文件指定section下的指定key对应的value * 参数 * 1,节 * 2,key * 3,ini文件路径 * 4,待读取的ini文件采用的的编码类型 * 返回值 * value */ public static string GetValue(string sectionName, string key, string iniFilePath, Encoding encoding) { byte[] Value = new byte[512];//ini文件内容相同,但是如果编码不同,则占用的byte数目不同 int length = GetPrivateProfileString(sectionName, key, "", Value, 512, iniFilePath); if (length == 0) { throw new Exception(string.Format("The value for section:{0} key:{1} doesn't exist in the inifile{2}", sectionName, key, iniFilePath)); } string res = encoding.GetString(Value, 0, length); return res; } /*功能 * 返回ini文件中所有的节 * 参数 * 1,ini文件路径 * 2,ini文件的编码 */ public static List<string> GetSectionNames(string iniFilePath, Encoding encoding) { byte[] buffer = new byte[1024]; int length = GetPrivateProfileString(null, null, "", buffer, 1024, iniFilePath); if (length == 0) { throw new Exception(string.Format("No section doesn't exist in the inifile{0}", iniFilePath)); } string[] rs = encoding.GetString(buffer, 0, length).Split(new string[] { "