您的位置:首页 > 编程语言 > C#

C# API读写ini配置文件

2011-05-23 16:13 423 查看
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Runtime.InteropServices;
using System.Collections;

///////////////////////////////////////////////////////////////////////
// INI文件是文本文件,由若干节(section)组成,在每个带方括号的标题下面,
//是若干个关键词(key)及其对应的值(Value)
//[Section]
//Key=Value
//////////////////////////////////////////////////////////////////////

namespace iniHelper
{
public class DAL
{
[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);

#region 字段与属性
private string _iniFileFullPath;
public string ls_iniFileFullPath
{
set { _iniFileFullPath = value; }
get { return _iniFileFullPath; }
}
#endregion

/// <summary>
/// 写入数据到INI文件中
/// <PARAM name="iniSection">ini节点名称</PARAM>
/// <PARAM name="iniKey">iniKEY名称</PARAM>
/// <PARAM name="iniValue">写入的值</PARAM>
/// </summary>
public void Write(string iniSection, string iniKey, string iniValue)
{
WritePrivateProfileString(iniSection, iniKey, iniValue, this.ls_iniFileFullPath);
}
/// <summary>
///从ini文件中读取数据
/// <PARAM name="iniSection">ini节点名称</PARAM>
/// <PARAM name="iniKey">iniKEY名称</PARAM>
/// <returns>指定ini节点或iniKEY的值</returns>
/// </summary>
public string Read(string iniSection, string iniKey)
{
StringBuilder resultValue = new StringBuilder(65535);
int i = GetPrivateProfileString(iniSection, iniKey, "", resultValue, 65535, this.ls_iniFileFullPath);
return resultValue.ToString();
}
/// <summary>
/// 删除指定节点
/// </summary>
/// <param name="section">要删除的节点名</param>
/// <returns>删除成功或节点不存在,返回值都为真</returns>
public bool DeleteSection(string section)
{
bool flag = false;//标志
try
{
if (section.Trim().Length <= 0)
{//找不到节点
flag = false;
}
else
{
if (WritePrivateProfileString(section, null, null, this.ls_iniFileFullPath) == 0)
{
flag = false;
}
else
{
flag = true;
}
}
}
catch
{
flag = false;
}
return flag;
}
/// <summary>
/// 删除指定节点下的KEY值
/// </summary>
/// <param name="section">指定节点</param>
/// <param name="key">指定节点下的key</param>
/// <returns>删除成功或不存在时都返回true</returns>
public bool DeleteKey(string section, string key)
{
bool flag = false;
try
{
if (section.Trim().Length <= 0 || key.Trim().Length <= 0)
{
flag = false;
}
else
{
if (WritePrivateProfileString(section, key, null, this.ls_iniFileFullPath) == 0)
{
flag = false;
}
else
{
flag = true;
}
}
}
catch
{
flag = false;
}
return flag;
}

}
}

such as:

[UserInfo]
Smtp=smtp.qq.com

UserInfo 是节点名(Section)

Smtp 是关键值(keys)

smtp.qq.com 是对应值(value)

感觉就和XML文件一样的····只不过··他没有根节点,,瀑布式的子节点而已。

name:5+x
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: