C#使用kernel32.dll讀寫INI文件的案例詳解
INI文件是一種常見的配置文件格式,通常用于存儲應用程序的配置信息。在C#中,我們可以使用Kernel32庫來讀寫INI文件
引用
//寫入 [DllImport("kernel32.dll")] private static extern long WritePrivateProfileString(string section, string key, string val, string filePath); //讀取 [DllImport("kernel32.dll")] private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string INIPath);
WritePrivateProfileString
向INI文件中寫入數(shù)據(jù):
- section:INI文件中的一個段落名稱。
- key:INI文件中的一個鍵名稱。
- val:要寫入的值。
- filePath:INI文件的完整路徑。
GetPrivateProfileString
從INI文件中讀取數(shù)據(jù):
- section:INI文件中的一個段落名稱。
- key:INI文件中的一個鍵名稱。
- def:如果沒有找到指定的鍵,則返回的默認值。
- retVal:用于存儲讀取到的值的StringBuilder對象。
- size:retVal對象的大小。
- INIPath:INI文件的完整路徑。
寫入
public void IniWriteValue(string Section, string Key, string Value) { string inipath = ".CONFIG.INI"; WritePrivateProfileString(Section, Key, Value, inipath); } public void IniWriteValues() { IniWriteValue("CONFIG", "Comport", ComPort); }
讀取
StringBuilder temp = new StringBuilder(500); GetPrivateProfileString("CONFIG", "Player", "", temp, 500, ".\CONFIG.INI"); Player = temp.ToString();
封裝示例
使用了DllImport來調用Windows API函數(shù),用于讀取和寫入INI文件。雖然這段代碼可以正常工作,但是它存在一些問題:
- 可讀性差:代碼中的參數(shù)名稱和變量名不夠清晰,難以理解。
- 可維護性差:如果我們需要在代碼中多次使用這些函數(shù),我們需要在每個使用它們的地方都寫一遍DllImport聲明,這樣會導致代碼重復和維護困難。
為了解決這些問題,可以對代碼進行重構??梢詫llImport聲明封裝到一個類中,這樣就提高代碼的可讀性和可維護性。同時,為函數(shù)添加更具描述性的參數(shù)名稱和變量名,這樣可以使代碼更加易于理解。
重構代碼:
class IniFile { // 引入kernel32.dll庫,用于寫入INI文件 [DllImport("kernel32.dll")] private static extern long WritePrivateProfileString(string section, string key, string val, string filePath); // 引入kernel32.dll庫,用于讀取INI文件 [DllImport("kernel32.dll")] private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string INIPath); // INI文件路徑 private string _filePath; // 構造函數(shù),初始化INI文件路徑 public IniFile(string filePath) { _filePath = filePath; } // 寫入INI文件 public void WriteValue(string section, string key, string value) { WritePrivateProfileString(section, key, value, _filePath); } // 寫入INI文件 public string ReadValue(string section, string key, string defaultValue = "") { StringBuilder sb = new StringBuilder(255); GetPrivateProfileString(section, key, defaultValue, sb, 255, _filePath); return sb.ToString(); } }
我們將DllImport聲明封裝到了一個名為IniFile的類中。這個類包含了兩個函數(shù):WriteValue和ReadValue,用于寫入和讀取INI文件中的值。我們還添加了一個構造函數(shù),用于初始化INI文件的路徑。
現(xiàn)在,我們可以在代碼中使用IniFile類來讀取和寫入INI文件中的值。這樣可以提高代碼的可讀性和可維護性,同時也可以避免代碼重復。
到此這篇關于C#使用kernel32.dll讀寫INI文件的文章就介紹到這了,更多相關c# kernel32.dll讀寫INI文件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
聊聊C# 中HashTable與Dictionary的區(qū)別說明
這篇文章主要介紹了聊聊C# 中HashTable與Dictionary的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01