C#读写ini文件

时间:2022-08-30 18:12:51

1、ini文件有自己的结构。由若干段落(SECTION)组成,每个段落包含若干个关键字(KEYWORD)、等号、关键字的值(VALUE).例如:
[CN1]
SERVER = ***
ID = ***
PW = ***
DATABASE = ***

2、C#命名空间中没有直接读写INI的类。但在"kernel32.dll"这个文件中有Win32的API函数--WritePrivateProfileString()和GetPrivateProfileString()

2.1 WritePrivateProfileString()函数,使用如下:
[DllImport( "kernel32" )]
private static extern long WritePrivateProfileString (string section ,string key , string val , string filePath ) ;
参数说明:
section:INI文件中的段落;
key:INI文件中的关键字;
val:INI文件中关键字的数值;
filePath:INI文件的完整的路径和名称

2.2 和GetPrivateProfileString()函数,使用如下:
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
参数说明:
section:INI文件中的段落名称;
key:INI文件中的关键字;
def:无法读取时候时候的缺省数值;
retVal:读取数值;
size:数值的大小;
filePath:INI文件的完整路径和名称。

代码参考:

 1 public static string strIniFilePathName = Application.StartupPath + "\\DATABASE.INI";
 2         
 3         #region -----データベースサービスの情報をもらう-----
 4         //引入dll文件,声明函数
 5         [DllImport("kernel32")]
 6         private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
 7         /// <summary>
 8         /// INI ファイルからデータ値を読む 例えば:IniReadvalue("DataBase","SERVER",Application.StartupPath+"Temp1.ini");
 9         /// </summary>
10         /// <param name="strSectionName">Section名称</param>
11         /// <param name="strKeyName">鍵名</param>
12         /// <param name="strIniFilePathName">INIファイル名称</param>
13         /// <returns>鍵値</returns>
14         public static string GetStrIniReadvalue(string strSectionName, string strKeyName, string strIniFilePathName)
15         {
16             try
17             {
18                 StringBuilder temp = new StringBuilder(255);
19                 int i = GetPrivateProfileString(strSectionName, strKeyName, "", temp, 255, strIniFilePathName);
20                 return temp.ToString();
21             }
22             catch (Exception ex)
23             {
24                 throw ex;
25             }
26         }
27 
28         /// <summary>
29         /// 读取ini文件
30         /// </summary>
31         /// <param name="strSectionName">Section名称</param>
32         /// <param name="strdbServerIP">データベースサーバーのIPアドレス</param>
33         /// <param name="strdbUser">サーバーに接続するログイン名</param>
34         /// <param name="strdbPwd">サーバーに接続するパスワード</param>
35         /// <param name="strdbDataBase">データベース名前</param>
36         public static void GetIniReadString(string strSectionName, ref string strdbServerIP, ref string strdbUser, ref string strdbPwd, ref string strdbDataBase)
37         {
38             if (File.Exists(strIniFilePathName))
39             {
40                 strdbServerIP = GetStrIniReadvalue(strSectionName, "SERVER", strIniFilePathName);
41                 strdbUser = GetStrIniReadvalue(strSectionName, "ID", strIniFilePathName);
42                 strdbPwd = GetStrIniReadvalue(strSectionName, "PW", strIniFilePathName);
43                 strdbDataBase = GetStrIniReadvalue(strSectionName, "DATABASE", strIniFilePathName);
44             }
45         }
46 
47         #endregion