新建一个类,附上代码如下:
在使用文件中,new一个对象即可:IniFiles ini = new IniFiles(Application.StartupPath + @"\MyConfig.ini");
tip:括号内为ini文件的地址路径,@为转义符号,不然会报错。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Runtime.InteropServices;
namespace INI
{
class IniFiles
{
public string inipath;
//声明API函数
[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>
/// 构造方法
/// </summary>
/// <param name="INIPath">文件路径</param>
public IniFiles(string INIPath)
{
inipath = INIPath;
}
public IniFiles() { }
/// <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)
{
if (string.IsNullOrEmpty(Section))
{
throw new ArgumentException("必须指定节点名称", "Section");
}
if (string.IsNullOrEmpty(Key))
{
throw new ArgumentException("必须指定键名称", "Key");
}
if (Value == null)
{
throw new ArgumentException("值不能为null", "Value");
}
WritePrivateProfileString(Section, Key, Value, this.inipath);
}
/// <summary>
/// 读出INI文件
/// </summary>
/// <param name="Section">项目名称(如 [TypeName] )</param>
/// <param name="Key">键</param>
public void IniReadValue(string Section, string Key,ref string Value)
{
StringBuilder temp = new StringBuilder(500);
if (string.IsNullOrEmpty(Section))
{
throw new ArgumentException("必须指定节点名称", "Section");
}
if (string.IsNullOrEmpty(Key))
{
throw new ArgumentException("必须指定键名称", "Key");
}
int i = GetPrivateProfileString(Section, Key, "", temp, 500, this.inipath);
if (i != 0)
{
Value = temp.ToString();
}
temp = null;
}
/// <summary>
/// 验证文件是否存在
/// </summary>
/// <returns>布尔值</returns>
public bool ExistINIFile()
{
return File.Exists(inipath);
}
}
}