[DllImport(kernel32.dll)]
引入kernel32.dll這個動態連結程式庫,在這個動態連結程式庫中包含了很多的windows api 函數,在windows api 對ini檔案讀寫的方法經常被用到,下面摘錄了別人的一段較詳細的資料
namespace APIMethod
{
/// <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">要在其中寫入新字串的小節名稱。這個字串不區分大小寫</param>
/// <param name="lpKeyName">要設定的項名或條目名。這個字串不區分大小寫。用null可刪除這個小節的所有設定項</param>
/// <param name="lpString">指定為這個項寫入的字串值。用null表示刪除這個項現有的字串</param>
/// <param name="lpFileName">初始設定檔案的名字。如果沒有指定完整路徑名,則windows會在windows目錄尋找檔案。如果檔案沒有找到,則函數會建立它</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">欲在其中尋找條目的小節名稱。這個字串不區分大小寫。如設為null,就在lpReturnedString緩衝區內裝載這個ini檔案所有小節的列表</param>
/// <param name="lpKeyName">欲擷取的項名或條目名。這個字串不區分大小寫。如設為null,就在lpReturnedString緩衝區內裝載指定小節所有項的列表</param>
/// <param name="lpDefault">指定的條目沒有找到時返回的預設值。可設為空白("")</param>
/// <param name="lpReturnedString">指定一個字串緩衝區,長度至少為nSize</param>
/// <param name="nSize">指定裝載到lpReturnedString緩衝區的最大字元數量</param>
/// <param name="lpFileName">初始設定檔案的名字。如沒有指定一個完整路徑名,windows就在Windows目錄中尋找檔案</param>
/// 注意:如lpKeyName參數為null,那麼lpReturnedString緩衝區會載入指定小節所有設定項的一個列表。
/// 每個項都用一個NULL字元分隔,最後一個項用兩個NULL字元中止。也請參考GetPrivateProfileInt函數的註解
/// <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">小節的名稱</param>
/// <param name="key">鍵的名稱</param>
/// <param name="value">鍵的值</param>
/// <returns>執行成功為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>
/// 刪除指定小節中的鍵
/// </summary>
/// <param name="section">小節的名稱</param>
/// <param name="key">鍵的名稱</param>
/// <returns>執行成功為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>
/// 刪除指定的小節(包括這個小節中所有的鍵)
/// </summary>
/// <param name="section">小節的名稱</param>
/// <returns>執行成功為True,失敗為False。</returns>
public static long DeleteIniSection(string section)
{
if (section.Trim().Length <= 0) return 0;
return WritePrivateProfileString(section, null, null, FilePath);
}
/// <summary>
/// 獲得指定小節中鍵的值
/// </summary>
/// <param name="section">小節的名稱</param>
/// <param name="key">鍵的名稱</param>
/// <param name="defaultValue">如果索引值為空白,或沒找到,返回指定的預設值。</param>
/// <param name="capacity">緩衝區初始化大小。</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>
/// 獲得指定小節中鍵的值
/// </summary>
/// <param name="section">小節的名稱</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>
/// 獲得指定小節中鍵的值
/// </summary>
/// <param name="section">小節的名稱</param>
/// <param name="key">鍵的名稱</param>
/// <returns>鍵的值</returns>
public static string GetIniKeyValue(string section, string key)
{
return GetIniKeyValue(section, key, string.Empty, 1024);
}
}
}
源地址:http://kb.cnblogs.com/a/1209300/