C#-INI文件基础操作类
首先添加引用:
using System.Runtime.InteropServices;
声明外部实现方法:
[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);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string defVal, byte[] retVal, int size, string filePath);
构造函数:
string path;
public INI(string path)
{
this.path = path;
}
写入键值:
/// <summary>
/// 写入键值
/// </summary>
public void IniWriteValue(string section, string key, string value)
{
WritePrivateProfileString(section, key, value, path);
}
读取到字节数组:
/// <summary>
/// 读取ini文件,返回byte[]
/// </summary>
private byte[] IniReadValues(string section, string key)
{
byte[] bs = new byte[2048];
int i = GetPrivateProfileString(section, key, "", bs, 2048, path);
return bs;
}
/// <summary>
/// byte[] to string[]
/// </summary>
private string[] ByteToString(byte[] sectionByte)
{
ASCIIEncoding ascii = new ASCIIEncoding();
string sections = ascii.GetString(sectionByte);
string[] sectionList = sections.Split(new char[1] { '\0' });
return sectionList;
}
读取所有段落,所有键,键值:
/// <summary>
/// 读取ini文件的所有段落名
/// </summary>
public string[] IniReadValues()
{
byte[] allSection = IniReadValues(null, null);
return ByteToString(allSection);
}
/// <summary>
/// 读取ini文件的某段落下的所有键名
/// </summary>
public string[] IniReadValues(string section)
{
byte[] sectionByte = IniReadValues(section, null);
return ByteToString(sectionByte);
}
/// <summary>
/// 读取键值,返回字符串
/// </summary>
public string IniReadValue(string section, string key)
{
StringBuilder sb = new StringBuilder(255);
int i = GetPrivateProfileString(section, key, "", sb, 255, path);
return sb.ToString();
}
删除所有段落,指定段落,指定键:
/// <summary>
/// 删除所有段落
/// </summary>
public void ClearAllSection()
{
IniWriteValue(null, null, null);
}
/// <summary>
/// 删除文件下指定段落
/// </summary>
public void ClearSection(string section)
{
IniWriteValue(section, null, null);
}
/// <summary>
/// 删除文件下段落下指定键
/// </summary>
public void ClearSection(string section,string key)
{
IniWriteValue(section, key, null);
}
重命名段落或键:
/// <summary>
/// 重命名段落
/// </summary>
/// <param name="section"></param>
/// <param name="newName"></param>
/// <returns></returns>
public bool ReNameSection(string section, string newName)
{
string[] keys = IniReadValues(section);
foreach (string key in keys)
{
if (key == null || key == "")
break;
string value = IniReadValue(section, key);
IniWriteValue(newName, key, value);
}
ClearSection(section);
return true;
}
/// <summary>
/// 重命名键
/// </summary>
/// <param name="section"></param>
/// <param name="key"></param>
/// <param name="newName"></param>
/// <returns></returns>
public bool ReNameSection(string section, string key, string newName)
{
string value = IniReadValue(section, key);
IniWriteValue(section, newName, value);
ClearSection(section, key);
return true;
}
判断段落或键是否存在:
/// <summary>
/// 判断段落或键是否存在
/// </summary>
/// <param name="section"></param>
/// <param name="key"></param>
/// <returns></returns>
public bool IsExist(string section, string key = "")
{
if (key == "")
{
string[] list = IniReadValues();
foreach (string l in list)
{
if (l == section)
return true;
}
}
else
{
string[] list = IniReadValues(section);
foreach (string l in list)
{
if (l == key)
return true;
}
}
return false;
}

浙公网安备 33010602011771号