首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 使用 Windows API 讀寫 INI 設定檔

     編輯:關於C#

前言

.NET 雖提供 XML、JSON 等設定檔支援,但傳統 INI 檔結構簡單、相容性佳,透過 Kernel32.dll API 讀寫更直觀高效。

核心 API 宣告

[DllImport("Kernel32.dll")]
public static extern bool WritePrivateProfileString(
    string lpAppName, string lpKeyName, string lpString, string lpFileName);

[DllImport("Kernel32.dll")]
public static extern int GetPrivateProfileString(
    string lpAppName, string lpKeyName, string lpDefault,
    StringBuilder lpReturnedString, int nSize, string lpFileName);

[DllImport("Kernel32.dll")]
public static extern int GetPrivateProfileInt(
    string lpAppName, string lpKeyName, int nDefault, string lpFileName);

寫入 INI 檔

參數說明:lpAppName 區段名、lpKeyName 鍵名、lpString 值、lpFileName 完整路徑。

WritePrivateProfileString("Settings", "Url", "https://wenti.cnblogs.com", @"c:\config.ini");
WritePrivateProfileString("Settings", "Time", "20", @"c:\config.ini");

產生內容:

[Settings]
Url=https://wenti.cnblogs.com
Time=20

讀取字串值

StringBuilder sb = new StringBuilder(256);
GetPrivateProfileString("Settings", "Url", "https://", sb, 256, @"c:\config.ini");
string url = sb.ToString(); // "https://wenti.cnblogs.com"

GetPrivateProfileString("Settings", "Time", "10", sb, 256, @"c:\config.ini");
string time = sb.ToString(); // "20"

若區段或鍵不存在,回傳預設值(lpDefault)。

讀取整數值

int timeInt = GetPrivateProfileInt("Settings", "Time", 10, @"c:\config.ini");

優缺點比較

優點缺點
語法簡單、無需解析邏輯需 P/Invoke 呼叫非託管程式碼
跨語言相容(C++、VB 等皆可讀)不支援巢狀結構、資料型別有限
適合簡單設定儲存大量資料讀寫效能較 XML/JSON 低

適用建議

輕量級設定、需與舊系統共用設定檔、或偏好 INI 簡潔格式時優先考慮。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved