namespace apimethod
{
/*
* 姓名:譚義
* 時間:2008.5.28
* q q:260511433
* msn :luoye0732@hotmail.com
* 郵箱:luoye0732@163.com
* 備注:假如大家對此模塊還需要補充或完善修改的,請和我聯(lián)系,大家一起努力。
* 注重:此模塊只能獲得一個鍵的值,假如誰能完善獲得一個小節(jié)的所有鍵與值,請與我聯(lián)系。
*/
/// <summary>
/// ini文件操作類
/// </summary>
public sealed class iniutility
{
private static string _filepath = string.empty;//文件路徑
/// <summary>
/// 文件路徑
/// </summary>
public static string filepath
{
get { return _filepath; }
set { _filepath = value; }
}
/// <summary>
/// windows api 對ini文件寫方法
/// </summary>
/// <param name="lpapplicationname">要在其中寫入新字串的小節(jié)名稱。這個字串不區(qū)分大小寫</param>
/// <param name="lpkeyname">要設(shè)置的項名或條目名。這個字串不區(qū)分大小寫。用null可刪除這個小節(jié)的所有設(shè)置項</param>
/// <param name="lpstring">指定為這個項寫入的字串值。用null表示刪除這個項現(xiàn)有的字串</param>
/// <param name="lpfilename">初始化文件的名字。假如沒有指定完整路徑名,則windows會在windows目錄查找文件。假如文件沒有找到,則函數(shù)會創(chuàng)建它</param>
/// <returns></returns>
[system.runtime.interopservices.dllimport("kernel32")]
private static extern long writeprivateprofilestring(string lpapplicationname, string lpkeyname, string lpstring, string lpfilename);
/// <summary>
/// windows api 對ini文件讀方法
/// </summary>
/// <param name="lpapplicationname">欲在其中查找條目的小節(jié)名稱。這個字串不區(qū)分大小寫。如設(shè)為null,就在lpreturnedstring緩沖區(qū)內(nèi)裝載這個ini文件所有小節(jié)的列表</param>
/// <param name="lpkeyname">欲獲得的項名或條目名。這個字串不區(qū)分大小寫。如設(shè)為null,就在lpreturnedstring緩沖區(qū)內(nèi)裝載指定小節(jié)所有項的列表</param>
/// <param name="lpdefault">指定的條目沒有找到時返回的默認值??稍O(shè)為空("")</param>
/// <param name="lpreturnedstring">指定一個字串緩沖區(qū),長度至少為nsize</param>
/// <param name="nsize">指定裝載到lpreturnedstring緩沖區(qū)的最大字符數(shù)量</param>
/// <param name="lpfilename">初始化文件的名字。如沒有指定一個完整路徑名,windows就在windows目錄中查找文件</param>
/// 注重:如lpkeyname參數(shù)為null,那么lpreturnedstring緩沖區(qū)會載入指定小節(jié)所有設(shè)置項的一個列表。
/// 每個項都用一個null字符分隔,最后一個項用兩個null字符中止。也請參考getprivateprofileint函數(shù)的注解
/// <returns></returns>
[system.runtime.interopservices.dllimport("kernel32")]
private static extern long getprivateprofilestring(string lpapplicationname, string lpkeyname, string lpdefault, system.text.stringbuilder lpreturnedstring, int nsize, string lpfilename);
/// <summary>
/// 向ini文件中寫入值
/// </summary>
/// <param name="section">小節(jié)的名稱</param>
/// <param name="key">鍵的名稱</param>
/// <param name="value">鍵的值</param>
/// <returns>執(zhí)行成功為true,失敗為false。</returns>
public static long writeinikey(string section, string key, string value)
{
if (section.trim().length <= 0 || key.trim().length <= 0 ||
value.trim().length <= 0) return 0;
return writeprivateprofilestring(section, key, value, filepath);
}
/// <summary>
/// 刪除指定小節(jié)中的鍵
/// </summary>
/// <param name="section">小節(jié)的名稱</param>
/// <param name="key">鍵的名稱</param>
/// <returns>執(zhí)行成功為true,失敗為false。</returns>
public static long deleteinikey(string section, string key)
{
if (section.trim().length <= 0 || key.trim().length <= 0) return 0;
return writeprivateprofilestring(section, key, null, filepath);
}
/// <summary>
/// 刪除指定的小節(jié)(包括這個小節(jié)中所有的鍵)
/// </summary>
/// <param name="section">小節(jié)的名稱</param>
/// <returns>執(zhí)行成功為true,失敗為false。</returns>
public static long deleteinisection(string section)
{
if (section.trim().length <= 0) return 0;
return writeprivateprofilestring(section, null, null, filepath);
}
/// <summary>
/// 獲得指定小節(jié)中鍵的值
/// </summary>
/// <param name="section">小節(jié)的名稱</param>
/// <param name="key">鍵的名稱</param>
/// <param name="defaultvalue">假如鍵值為空,或沒找到,返回指定的默認值。</param>
/// <param name="capacity">緩沖區(qū)初始化大小。</param>
/// <returns>鍵的值</returns>
public static string getinikeyvalue(string section, string key,string defaultvalue,int capacity)
{
if (section.trim().length <= 0 || key.trim().length <= 0) return defaultvalue;
system.text.stringbuilder strtemp = new system.text.stringbuilder(capacity);
long returnvalue = getprivateprofilestring(section, key, defaultvalue, strtemp, capacity, filepath);
return strtemp.tostring().trim();
}
/// <summary>
/// 獲得指定小節(jié)中鍵的值
/// </summary>
/// <param name="section">小節(jié)的名稱</param>
/// <param name="key">鍵的名稱</param>
/// <param name="defaultvalue">假如鍵值為空,或沒找到,返回指定的默認值。</param>
/// <returns>鍵的值</returns>
public static string getinikeyvalue(string section, string key, string defaultvalue)
{
return getinikeyvalue(section, key, defaultvalue, 1024);
}
/// <summary>
/// 獲得指定小節(jié)中鍵的值
/// </summary>
/// <param name="section">小節(jié)的名稱</param>
/// <param name="key">鍵的名稱</param>
/// <returns>鍵的值</returns>
public static string getinikeyvalue(string section, string key)
{
return getinikeyvalue(section, key, string.empty, 1024);
}
}
}