C#にてINIファイルの読み込み・書き込み方法を説明します。
INIファイルは、単純なテキストファイルなので、テキストエディタで編集することも出来ます。
自作のアプリケーションの設定ファイルなどにも使用することも出来ます。
ここでは、Win32APIを使用して読み書きする方法を記載します。
INIクラス IniFilesクラス を作成して、それを呼び出す方法で説明します。
INIファイル読み込み・書き込みクラス
KERNEL32.DLLを読み込み、APIをコールすることにより読み書きします。
/// <summary>
/// INIファイルの読み書きクラス
/// </summary>
class IniFiles
{
[DllImport("KERNEL32.DLL")]
private static extern uint GetPrivateProfileString(
string lpAppName,
string lpKeyName,
string lpDefault,
StringBuilder lpReturnedString,
uint nSize,
string lpFileName);
[DllImport("KERNEL32.DLL")]
private static extern uint GetPrivateProfileInt(
string lpAppName,
string lpKeyName,
int nDefault,
string lpFileName);
[DllImport("KERNEL32.DLL")]
private static extern uint WritePrivateProfileString(
string lpAppName,
string lpKeyName,
string lpString,
string lpFileName);
/// <summary>
/// INIファイルから値を取得する
/// </summary>
/// <param name="lpSection">セッション名称</param>
/// <param name="lpKeyName">キー名称</param>
/// <param name="lpFileName">INIファイル名</param>
/// <returns></returns>
public static string GetIniString(string lpSection, string lpKeyName, string lpFileName)
{
System.Text.StringBuilder strValue = new System.Text.StringBuilder(1024);
uint sLen = GetPrivateProfileString(lpSection, lpKeyName, "", strValue, 1024, lpFileName);
return strValue.ToString();
}
/// <summary>
/// INIファイルに値を書き込む
/// </summary>
/// <param name="lpSection">セッション名称</param>
/// <param name="lpKeyName">キー名称</param>
/// <param name="lpValue">セットする値</param>
/// <param name="lpFileName">INIファイル名</param>
/// <returns></returns>
public static bool PutIniString(string lpSection, string lpKeyName, string lpValue, string lpFileName)
{
long result = WritePrivateProfileString(lpSection, lpKeyName, lpValue, lpFileName);
return result != 0;
}
}
呼び出し側
private void button1_Click(object sender, EventArgs e)
{
string FilePath = @"C:\work\MyFile.ini";
string s = IniFiles.GetIniString("Section1", "KEY1", FilePath);
IniFiles.PutIniString("Section2", "KEY1", "AAAA", FilePath);
}