C# winform 建立,修改,刪除 ini配置檔案
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace EmailCustomer
{
class IniFile
{
private string path;
/// <summary>
/// 例項初始化為指定路徑的INI檔案。
/// </summary>
/// <param name= "path "> INI檔案路徑。 </param>
public IniFile(string path)
{
this.path = path;
}
/// <summary>
/// 獲取INI檔案的路徑。
/// </summary>
public string Path
{
get
{
return path;
}
}
/// <summary>
/// 讀取指定小節下指定條目的字串。
/// </summary>
/// <param name= "sectionName "> 欲在其中查詢條目的小節名稱。這個字串不區分大小寫。 </param>
/// <param name= "keyName "> 欲獲取的項名或條目名。這個字串不區分大小寫。 </param>
/// <param name= "defaultValue "> 指定的條目沒有找到時返回的預設值。 </param>
/// <returns> 指定小節下指定條目的字串。 </returns>
/// <remarks> 如果sectionName為null,則返回所有小節的列表,如果keyName為null,指定小節所有項的列表。 </remarks>
public string ReadString(string sectionName, string keyName, string defaultValue)
{
const int MAXSIZE = 255;
StringBuilder temp = new StringBuilder(MAXSIZE);
GetPrivateProfileString(sectionName, keyName, defaultValue, temp, 255, this.path);
return temp.ToString();
}
public void WriteString(string sectionName, string keyName, string value)
{
WritePrivateProfileString(sectionName, keyName, value, this.path);
}
public int ReadInteger(string sectionName, string keyName, int defaultValue)
{
return GetPrivateProfileInt(sectionName, keyName, defaultValue, this.path);
}
public void WriteInteger(string sectionName, string keyName, int value)
{
WritePrivateProfileString(sectionName, keyName, value.ToString(), this.path);
}
public bool ReadBoolean(string sectionName, string keyName, bool defaultValue)
{
int temp = defaultValue ? 1 : 0;
int result = GetPrivateProfileInt(sectionName, keyName, temp, this.path);
return (result == 0 ? false : true);
}
public void WriteBoolean(string sectionName, string keyName, bool value)
{
string temp = value ? "1 " : "0 ";
WritePrivateProfileString(sectionName, keyName, temp, this.path);
}
/// <summary>
/// 刪除這個項現有的字串。
/// </summary>
/// <param name= "sectionName "> 要設定的項名或條目名。這個字串不區分大小寫。 </param>
/// <param name= "keyName "> 要刪除的項名或條目名。這個字串不區分大小寫。 </param>
public void DeleteKey(string sectionName, string keyName)
{
WritePrivateProfileString(sectionName, keyName, null, this.path);
}
/// <summary>
/// 刪除這個小節的所有設定項。
/// </summary>
/// <param name= "sectionName "> 要刪除的小節名。這個字串不區分大小寫。 </param>
public void EraseSection(string sectionName)
{
WritePrivateProfileString(sectionName, null, null, this.path);
}
[DllImport("kernel32")]
public static extern int WritePrivateProfileString(string lpApplicationName, string lpKeyName, string lpString, string lpFileName);
[DllImport("kernel32")]
public static extern int GetPrivateProfileInt(string lpApplicationName, string lpKeyName, int nDefault, string lpFileName);
[DllImport("kernel32")]
public static extern int GetPrivateProfileString(string lpApplicationName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, int nSize, string lpFileName);
}
}