C#によるINIファイルの入出力について
API関数を使ったINIファイルの入出力を行なうサンプルです。
INIファイルの入出力サンプルソース
using System; using System.IO; using System.Text; using System.Runtime.InteropServices; public class IniFile { [DllImport("KERNEL32.DLL")] public static extern uint GetPrivateProfileString(string lpAppName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, uint nSize, string lpFileName); [DllImport("KERNEL32.DLL", EntryPoint="GetPrivateProfileStringA")] public static extern uint GetPrivateProfileStringByByteArray(string lpAppName, string lpKeyName, string lpDefault, byte [] lpReturnedString, uint nSize, string lpFileName); [DllImport("KERNEL32.DLL")] public static extern uint GetPrivateProfileInt( string lpAppName, string lpKeyName, int nDefault, string lpFileName ); [DllImport("KERNEL32.DLL")] public static extern uint WritePrivateProfileString( string lpAppName, string lpKeyName, string lpString, string lpFileName); public static void Main(string[] args) { string iniPath = System.IO.Path.Combine( new FileInfo(Environment.CommandLine.Replace( "\"", "" )) .Directory.ToString(),"sample.ini"); // 文字列を読み出す StringBuilder sb = new StringBuilder(1024); GetPrivateProfileString("セクション1", "キー1", "default", sb, (uint)sb.Capacity, iniPath); Console.WriteLine("セクション1のキー1の値: {0}", sb.ToString()); // 整数値を読み出す uint resultValue = GetPrivateProfileInt( "セクション2", "キー2", 0, iniPath); Console.WriteLine("セクション2のキー2の値: {0}", resultValue); // キーと値を書き加える WritePrivateProfileString( "セクション3", "キー1", "文字列の値3", iniPath); WritePrivateProfileString( "セクション3", "キー2", "543216789", iniPath); // 指定セクションのキーの一覧を得る byte [] ar1 = new byte[1024]; uint resultSize1 = GetPrivateProfileStringByByteArray( "セクション3", null, "default", ar1, (uint)ar1.Length, iniPath); string result1 = Encoding.Default.GetString( ar1, 0, (int)resultSize1-1); string [] keys = result1.Split('\0'); foreach (string key in keys) { Console.WriteLine( "セクション3に含まれるキー名: {0}", key); } // 1つのキーと値のペアを削除する WritePrivateProfileString( "セクション3", "キー1", null, iniPath); // 指定セクション内の全てのキーと値のペアを削除する WritePrivateProfileString( "セクション3", null, null, iniPath); } }