程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# ini文件操作【源碼下載】,

C# ini文件操作【源碼下載】,

編輯:C#入門知識

C# ini文件操作【源碼下載】,


  介紹C#如何對ini文件進行讀寫操作,C#可以通過調用【kernel32.dll】文件中的 WritePrivateProfileString()和GetPrivateProfileString()函數分別對ini文件進行讀和寫操作。包括:讀取key的值、保存key的值、讀取所有section、讀取所有key、移除section、移除key等操作。

目錄

1. ini文件介紹

2. 讀取操作:包括讀取key的值、讀取所有section、讀取所有key等操作。

3. 寫入操作: 包括保存key的值、移除section、移除key等操作。

4. 源碼下載:展示運行圖及源碼下載

 

1. ini文件介紹

ini文件常用於存儲各類應用的配置信息,而內部的文件結構主要包括三個概念:sectionkeyvalue

其中section為各獨立的區域塊,名稱可以為英文、中文。

 

2. GetPrivateProfileString()函數 :讀取操作

C#可以通過調用【kernel32.dll】文件中的 GetPrivateProfileString()函數對ini文件進行讀取操作。

官方API:https://msdn.microsoft.com/zh-cn/library/ms724353.aspx

函數簽名

[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string sectionName, string key, string defaultValue, byte[] returnBuffer, int size, string filePath); 

成員

sectionName  {string | null}:要讀區的區域名。若傳入null值,第4個參數returnBuffer將會獲得所有的section name。

key {string | null}:key的名稱。若傳入null值,第4個參數returnBuffer將會獲得所有的指定sectionName下的所有key name。

defaultValue {string}:key沒找到時的返回值。

returnBuffer {byte[]}:key所對應的值。

filePath {string}:ini文件路徑。

支持的操作

1) 獲取指定key的值。

2) 獲取ini文件所有的section名稱。

3) 獲取指定section下的所有key名稱。

 

2.1 獲取指定key的值

/// <summary>
/// 根據Key讀取Value
/// </summary>
/// <param name="sectionName">section名稱</param>
/// <param name="key">key的名稱</param>
/// <param name="filePath">文件路徑</param>
public static string GetValue(string sectionName, string key, string filePath)
{
    byte[] buffer = new byte[2048];
    int length = GetPrivateProfileString(sectionName, key, "發生錯誤", buffer,999, filePath);
    string rs = System.Text.UTF8Encoding.Default.GetString(buffer, 0, length);
    return rs;
}

 

2.2 獲取ini文件所有的section名稱

注意:中文名稱的section要進行轉碼。

/// <summary>
/// 獲取ini文件內所有的section名稱
/// </summary>
/// <param name="filePath">文件路徑</param>
/// <returns>返回一個包含section名稱的集合</returns>
public static List<string> GetSectionNames(string filePath)
{
    byte[] buffer = new byte[2048];
    int length = GetPrivateProfileString(null, "", "", buffer, 999, filePath);
    String[] rs = System.Text.UTF8Encoding.Default.GetString(buffer, 0, length).Split(new string[] { "\0" },StringSplitOptions.RemoveEmptyEntries);
    return rs.ToList();
}

  

2.3 獲取指定section下的所有key名稱

同樣要對中問名稱的key進行轉碼。

/// <summary>
/// 獲取指定section內的所有key
/// </summary>
/// <param name="sectionName">section名稱</param>
/// <param name="filePath">文件路徑</param>
/// <returns>返回一個包含key名稱的集合</returns>
public static List<string> GetKeys(string sectionName, string filePath)
{
    byte[] buffer = new byte[2048];
    int length = GetPrivateProfileString(sectionName,null,"", buffer, 999, filePath);
    String[] rs = System.Text.UTF8Encoding.Default.GetString(buffer, 0, length).Split(new string[] { "\0" }, StringSplitOptions.RemoveEmptyEntries);
    return rs.ToList();
}

 

3. WritePrivateProfileString()函數:寫入操作

C#可以通過調用【kernel32.dll】文件中的 WritePrivateProfileString()函數對ini文件進行寫入操作。

官方API:https://msdn.microsoft.com/zh-cn/library/ms725501.aspx

函數簽名

[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string sectionName, string key, string value, string filePath);

成員

sectionName {string}:要寫入的區域名。

key {string | null}:key的名稱。若傳入null值,將移除指定的section。

value {string | null}:設置key所對應的值。若傳入null值,將移除指定的key。

filePath {string}:ini文件路徑。

支持的操作

1) 創建/設置key的值。

2) 移除指定的section。

3) 移除指定的key。

 

3.1 創建/設置key的值

注意:若此key不存在將會創建,否則就為修改此key的值。

/// <summary>
/// 保存內容到ini文件
/// <para>若存在相同的key,就覆蓋,否則就增加</para>
/// </summary>
/// <param name="sectionName">section名稱</param>
/// <param name="key">key的名稱</param>
/// <param name="value">存儲的值</param>
/// <param name="filePath">文件路徑</param>
public static bool SetValue(string sectionName, string key, string value, string filePath)
{
    int rs = (int)WritePrivateProfileString(sectionName, key, value, filePath);
    return rs > 0;
}

 

3.2 移除指定的section

說明:key參數傳入null就為移除指定的section。

/// <summary>
/// 移除指定的section
/// </summary>
/// <param name="sectionName">section名稱</param>
/// <param name="filePath">文件路徑</param>
/// <returns></returns>
public static bool RemoveSection(string sectionName, string filePath)
{
    int rs = (int)WritePrivateProfileString(sectionName, null, "", filePath);
    return rs > 0;
}

  

3.3 移除指定的key

說明:value參數傳入null就為移除指定的key。

/// <summary>
/// 移除指定的key
/// </summary>
/// <param name="sectionName">section名稱</param>
/// <param name="filePath">文件路徑</param>
/// <returns></returns>
public static bool Removekey(string sectionName, string key, string filePath)
{
    int rs = (int)WritePrivateProfileString(sectionName, key, null, filePath);
    return rs > 0;
}

 

4. 源碼下載

4.1 運行圖

 

4.2 下載地址

百度網盤:http://pan.baidu.com/s/1dEQ3QuP

CSDN:http://download.csdn.net/detail/polk6/9684148

 

==================================系列文章==========================================

本篇文章:3.4 C# ini文件操作【源碼下載】

C#文章導航

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved