C# winform中讀寫ini檔案
INI檔案是一種具有特定結構的文字檔案,它的構成分為三部分,結構如下:
[Section1]
key 1 = value2
key 1 = value2
……
[Section2]
key 1 = value1
key 2 = value2
……
檔案由若干個段落(section)組成,每個段落又分成若干個鍵(key)和值(value)。Windows系統自帶的Win32的API函式GetPrivateProfileString()和WritePrivateProfileString()分別實現了對INI檔案的讀寫操作,他們位於kernel32.dll下。
但是令人遺憾的是C#所使用的.NET框架下的公共類庫並沒有提供直接操作INI檔案的類,所以唯一比較理想的方法就是呼叫API函式。
然後,.Net框架下的類庫是基於託管程式碼的,而API函式是基於非託管程式碼的,(在執行庫的控制下執行的程式碼稱作託管程式碼。相反,在執行庫之外執行的程式碼稱作非託管程式碼。)如何實現託管程式碼與非託管程式碼之間的操作呢?.Net框架的System.Runtime.InteropServices名稱空間下提供各種各樣支援COM interop及平臺呼叫服務的成員,其中最重要的屬性之一DllImportAttribute可以用來定義用於訪問非託管API的平臺呼叫方法,它提供了對從非託管DLL匯出的函式進行呼叫所必需的資訊。下面就來看一下如何實現C#與API函式的互操作。
讀操作:
- [DllImport("kernel32")]
- private static extern int GetPrivateProfileString(string section, string key, string defVal, StringBuilder retVal, int size, string filePath);
- section:要讀取的段落名
- key: 要讀取的鍵
- defVal: 讀取異常的情況下的預設值
- retVal: key所對應的值,如果該key不存在則返回空值
- size: 值允許的大小
- filePath: INI檔案的完整路徑和檔名
- [DllImport("kernel32")]
- private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
- section: 要寫入的段落名
- key: 要寫入的鍵,如果該key存在則覆蓋寫入
- val: key所對應的值
- filePath: INI檔案的完整路徑和檔名
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Runtime.InteropServices;
- using System.IO;
- namespace 測試
- {
- /// <summary>
- /// INI檔案的操作類
- /// </summary>
- public class IniFile
- {
- public string Path;
- public IniFile(string path)
- {
- this.Path = path;
- }
- #region 宣告讀寫INI檔案的API函式
- [DllImport("kernel32")]
- private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
- [DllImport("kernel32")]
- private static extern int GetPrivateProfileString(string section, string key, string defVal, StringBuilder retVal, int size, string filePath);
- [DllImport("kernel32")]
- private static extern int GetPrivateProfileString(string section, string key, string defVal, Byte[] retVal, int size, string filePath);
- #endregion
- /// <summary>
- /// 寫INI檔案
- /// </summary>
- /// <param name="section">段落</param>
- /// <param name="key">鍵</param>
- /// <param name="iValue">值</param>
- public void IniWriteValue(string section, string key, string iValue)
- {
- WritePrivateProfileString(section, key, iValue, this.Path);
- }
- /// <summary>
- /// 讀取INI檔案
- /// </summary>
- /// <param name="section">段落</param>
- /// <param name="key">鍵</param>
- /// <returns>返回的鍵值</returns>
- public string IniReadValue(string section, string key)
- {
- StringBuilder temp = new StringBuilder(255);
- int i = GetPrivateProfileString(section, key, "", temp, 255, this.Path);
- return temp.ToString();
- }
- /// <summary>
- /// 讀取INI檔案
- /// </summary>
- /// <param name="Section">段,格式[]</param>
- /// <param name="Key">鍵</param>
- /// <returns>返回byte型別的section組或鍵值組</returns>
- public byte[] IniReadValues(string section, string key)
- {
- byte[] temp = new byte[255];
- int i = GetPrivateProfileString(section, key, "", temp, 255, this.Path);
- return temp;
- }
- }
- }
程式在呼叫IniFile類時需要先例項化
- string path = Environment.CurrentDirectory + @"\Config.ini"; //指定ini檔案的路徑
- IniFile ini = new IniFile(path);
- string FpOrderNumber = ini.IniReadValue("SQL", "FpOrderNumber");//讀取ini檔案中鍵<span style="font-family: Arial, Helvetica, sans-serif;">FpOrderNumber的值</span><pre name="code" class="csharp" style="font-size: 13px; line-height: 19px;">ini.IniWriteValue("SQL", "FpOrderNumber", tsslMo.Text);//將tsslMo.Text的值寫到鍵FpOrderNumber中去
相關文章
- winform c#寫ini檔案ORMC#
- C#中讀寫INI配置檔案C#
- c#讀寫ini檔案C#
- 使用C#讀寫ini檔案C#
- C#關於讀寫INI檔案C#
- java 讀寫 ini 配置檔案Java
- VB讀寫ini檔案 (轉)
- C#讀取ini配置檔案C#
- VB.NET 讀寫ini檔案
- linux/windows 讀寫ini配置檔案LinuxWindows
- 使用IniEditor讀寫INI型別配置檔案型別
- 讀寫INI檔案的四個函式 (轉)函式
- WinForm讀取Excel檔案ORMExcel
- C#讀寫檔案總結C#
- 使用C#讀寫xml檔案C#XML
- 建立與讀取.ini檔案
- delphi讀取ini檔案 (轉)
- go 讀取.ini配置檔案Go
- C#讀取文字檔案和寫文字檔案C#
- C# Winform中如何獲取檔名與檔案路徑C#ORM
- Python常用配置檔案ini、json、yaml讀寫總結PythonJSONYAML
- C# Winform如何開啟PDF檔案C#ORM
- C#讀寫xml檔案應用案例C#XML
- Symbian中操作ini檔案
- API讀取寫入 ini檔案內容的方法函式詳解API函式
- Symbian中ini檔案的使用
- Python中的檔案讀寫Python
- Java中檔案的讀寫操作Java
- 透過python讀取ini配置檔案Python
- 檔案讀寫
- Android中檔案的讀寫操作Android
- Linux下用C讀取INI配置檔案Linux
- 檔案排版(文字檔案讀寫)
- java操作ini檔案Java
- Golang 讀、寫檔案Golang
- keras讀寫檔案Keras
- perl 讀寫檔案
- 檔案讀寫IO