はじめに
INI ファイルは設定情報を保存するためのシンプルなフォーマットで、
多くのアプリケーションで利用されています。
本記事では、C# で INI ファイルをスマートに読み書きするためのクラスを紹介します。
このクラスを使用することで、INI ファイルの操作が簡単に行えるようになります。
INIファイルを読み書きするクラス
以下が INI ファイルの読み書きを行うためのクラスです。
このクラスは、Windows API を利用して INI ファイルの操作を行います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
class IniFile { [DllImport("kernel32.dll")] private static extern int GetPrivateProfileString( string lpApplicationName, string lpKeyName, string lpDefault, StringBuilder lpReturnedstring, int nSize, string lpFileName); [DllImport("kernel32.dll")] private static extern int WritePrivateProfileString( string lpApplicationName, string lpKeyName, string lpstring, string lpFileName); string filePath; public IniFile(string filePath) { this.filePath = filePath; } public string this[string section, string key] { set { WritePrivateProfileString(section, key, value, filePath); } get { StringBuilder sb = new StringBuilder(256); GetPrivateProfileString(section, key, string.Empty, sb, sb.Capacity, filePath); return sb.ToString(); } } public string GetValue(string section, string key, string defaultvalue) { StringBuilder sb = new StringBuilder(256); GetPrivateProfileString(section, key, defaultvalue, sb, sb.Capacity, filePath); return sb.ToString(); } public int GetValue(string section, string key, int defaultvalue) { StringBuilder sb = new StringBuilder(256); GetPrivateProfileString(section, key, defaultvalue.ToString(), sb, sb.Capacity, filePath); return Int32.Parse(sb.ToString()); } } |
クラスの使い方
クラスを使用する流れは、以下の通りです。
- クラスのインスタンスを作成し、INIファイルパスを指定
- 用意されているインデクサや GetValue メソッドを使用して読み書き
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// IniFileクラスのインスタンスを作成 IniFile ini = new IniFile("path/to/your/config.ini"); // 値の設定 ini["セクション名", "キー名"] = "値"; // 値の取得 string value = ini["セクション名", "キー名"]; // デフォルト値を指定して値を取得 string defaultValue = ini.GetValue("セクション名", "キー名", "デフォルト値"); // 整数値の取得 int intValue = ini.GetValue("セクション名", "キー名", 0); |
おわりに
本記事では、C# で INI ファイルをスマートに読み書きするためのクラスを紹介しました。
このクラスを使用することで、INI ファイルの操作が簡単に行えるようになります。
このクラスは以下のアプリケーション「BeatCounter」で活用されています。
https://github.com/SANACHAN-prog/BeatCounter