C#操作INI的类
原文:http://www.weiblog.org/?post=5
INI是微软Windows操作系统中的文件扩展名。很多INI文件被用来对操作系统或特定程序初始化或进行参数设置。在C#中也可是使用INI文件来配置程序,下面的代码就是在C#中操作INI文件的方法。
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace IniTest
{
/// <summary>
/// 为操作Ini文件声明方法
/// </summary>
public class Ini
{
/// <summary>
/// 设置Ini的指定键值的方法
/// </summary>
/// <param name="section">要在其中写入新字串的小节名称。</param>
/// <param name="key">要设置的项名或条目名。</param>
/// <param name="val">指定为这个项写入的字串值。</param>
/// <param name="path">指定INI文件的路径。</param>
/// <returns>非零表示写入成功,等于零表示写入失败。</returns>
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string path);
/// <summary>
/// 返回Ini的指定键值的方法
/// </summary>
/// <param name="section">欲在其中查找条目的配置节名称。</param>
/// <param name="key">欲获取的项名或条目名。</param>
/// <param name="def">指定的条目没有找到时,refValue的默认值,可设为空。</param>
/// <param name="retVal">指定一个字串缓冲区,存储获取到的指定条目的值,长度至少为size</param>
/// <param name="size"> 指定装载到lpReturnedString缓冲区的最大字符数量</param>
/// <param name="path">指定INI文件的路径(包括文件名);如果没有指定完整路径名,则windows会在windows目录查找文件。</param>
/// <returns>复制到lpReturnedString缓冲区的字节数量,其中不包括那些NULL中止字符。</returns>
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string path);
/// <summary>
///获取要读取的Ini文件的名字
/// </summary>
public static string filePeth;
/// <summary>
/// 获取INI键值。
/// </summary>
/// <param name="section">INI文件中的段落名称</param>
/// <param name="key">INI文件中的关键字</param>
/// <returns>INI文件中关键字的值</returns>
public static string GetIniKey(string section, string key)
{
StringBuilder value = new StringBuilder(255);
int i = GetPrivateProfileString(section, key, null, value, 255, filePeth);
return value.ToString();
}
/// <summary>
/// 设置Ini键值。
/// </summary>
/// <param name="section">INI文件中的段落名称</param>
/// <param name="key">INI文件中的关键字</param>
/// <param name="keyValue">INI文件中的关键字的值</param>
/// <returns>是否写入成功</returns>
public static bool WriteIniKey(string section, string key, string keyValue)
{
try
{
WritePrivateProfileString(section, key, keyValue, filePeth);
return (true);
}
catch
{
return (false);
}
}
}
}
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace IniTest
{
/// <summary>
/// 为操作Ini文件声明方法
/// </summary>
public class Ini
{
/// <summary>
/// 设置Ini的指定键值的方法
/// </summary>
/// <param name="section">要在其中写入新字串的小节名称。</param>
/// <param name="key">要设置的项名或条目名。</param>
/// <param name="val">指定为这个项写入的字串值。</param>
/// <param name="path">指定INI文件的路径。</param>
/// <returns>非零表示写入成功,等于零表示写入失败。</returns>
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string path);
/// <summary>
/// 返回Ini的指定键值的方法
/// </summary>
/// <param name="section">欲在其中查找条目的配置节名称。</param>
/// <param name="key">欲获取的项名或条目名。</param>
/// <param name="def">指定的条目没有找到时,refValue的默认值,可设为空。</param>
/// <param name="retVal">指定一个字串缓冲区,存储获取到的指定条目的值,长度至少为size</param>
/// <param name="size"> 指定装载到lpReturnedString缓冲区的最大字符数量</param>
/// <param name="path">指定INI文件的路径(包括文件名);如果没有指定完整路径名,则windows会在windows目录查找文件。</param>
/// <returns>复制到lpReturnedString缓冲区的字节数量,其中不包括那些NULL中止字符。</returns>
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string path);
/// <summary>
///获取要读取的Ini文件的名字
/// </summary>
public static string filePeth;
/// <summary>
/// 获取INI键值。
/// </summary>
/// <param name="section">INI文件中的段落名称</param>
/// <param name="key">INI文件中的关键字</param>
/// <returns>INI文件中关键字的值</returns>
public static string GetIniKey(string section, string key)
{
StringBuilder value = new StringBuilder(255);
int i = GetPrivateProfileString(section, key, null, value, 255, filePeth);
return value.ToString();
}
/// <summary>
/// 设置Ini键值。
/// </summary>
/// <param name="section">INI文件中的段落名称</param>
/// <param name="key">INI文件中的关键字</param>
/// <param name="keyValue">INI文件中的关键字的值</param>
/// <returns>是否写入成功</returns>
public static bool WriteIniKey(string section, string key, string keyValue)
{
try
{
WritePrivateProfileString(section, key, keyValue, filePeth);
return (true);
}
catch
{
return (false);
}
}
}
}