C#對(duì)INI文件進(jìn)行讀寫操作的示例代碼
1.通過調(diào)用API函數(shù)完成對(duì)INI文件的讀取,修改,寫入操作
string filePath; private void btnModify_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(filePath) || !File.Exists(filePath)) { using (SaveFileDialog sfd=new SaveFileDialog()) { sfd.Filter= "初始化文件(*.INI)|*.INI"; if (sfd.ShowDialog() == DialogResult.OK) { FileStream fs = System.IO.File.Create(sfd.FileName); fs.Dispose(); filePath = sfd.FileName; } } } INIHelper.WriteToINI(filePath, "ConnectString", "Data Source", txtServer.Text); INIHelper.WriteToINI(filePath, "ConnectString", "DataBase", txtDataBase.Text); INIHelper.WriteToINI(filePath, "ConnectString", "Uid", txtSid.Text); INIHelper.WriteToINI(filePath, "ConnectString", "Pwd", txtPwd.Text); MessageBox.Show("保存成功!"); } private void Form1_Load(object sender, EventArgs e) { } private void toolStripButton1_Click(object sender, EventArgs e) { using(OpenFileDialog ofd=new OpenFileDialog()) { ofd.Filter = "初始化文件(*.INI)|*.INI"; ofd.Multiselect = false; if (ofd.ShowDialog() == DialogResult.OK) { filePath = ofd.FileName; string source = INIHelper.ReadFromINI(filePath, "ConnectString", "Data Source"); string dataName= INIHelper.ReadFromINI(filePath, "ConnectString", "DataBase"); string uid= INIHelper.ReadFromINI(filePath, "ConnectString", "Uid", "未設(shè)置"); string pwd= INIHelper.ReadFromINI(filePath, "ConnectString", "Pwd","未設(shè)置"); txtServer.Text = source; txtDataBase.Text = dataName; txtSid.Text = uid; txtPwd.Text = pwd; } } } } /// <summary> /// 對(duì)INI文件進(jìn)行讀寫 /// </summary> class INIHelper { /// <summary> /// 從INI文件中讀取數(shù)據(jù) /// </summary> /// <param name="filePath">INI文件的全路徑</param> /// <param name="rootValue">根節(jié)點(diǎn)值,例如根節(jié)點(diǎn)[ConnectString]的值為:ConnectString</param> /// <param name="key">根節(jié)點(diǎn)下的鍵</param> /// <param name="defValue">當(dāng)標(biāo)記值未設(shè)定或不存在時(shí)的默認(rèn)值</param> /// <returns></returns> public static string ReadFromINI(string filePath, string rootValue,string key,string defValue="") { StringBuilder sb = new StringBuilder(1024); GetPrivateProfileString(rootValue, key, defValue, sb, 1024, filePath); return sb.ToString(); } public static void WriteToINI(string filePath, string rootValue, string key, string newVal) { WritePrivateProfileString(rootValue, key, newVal, filePath); } /// <summary> /// 對(duì)INI文件進(jìn)行讀取操作 /// </summary> /// <param name="IpAppName">表示INI文件內(nèi)部根節(jié)點(diǎn)的值</param> /// <param name="IpKeyName">表示根節(jié)點(diǎn)下子標(biāo)記的值</param> /// <param name="IpDefault">表示當(dāng)標(biāo)記值未設(shè)定或不存在時(shí)的默認(rèn)值</param> /// <param name="IpReturnString">返回讀取節(jié)點(diǎn)的值</param> /// <param name="nSize">讀取的節(jié)點(diǎn)內(nèi)容的最大容量</param> /// <param name="IpFileName">文件的全路徑</param> /// <returns></returns> [System.Runtime.InteropServices.DllImport("kernel32")] static extern int GetPrivateProfileString(string IpAppName, string IpKeyName, string IpDefault, StringBuilder IpReturnString, int nSize, string IpFileName); /// <summary> /// 對(duì)INI文件進(jìn)行寫入操作 /// </summary> /// <param name="mpAppName">INI文件內(nèi)部根節(jié)點(diǎn)的值</param> /// <param name="mpKeyName">將要修改的標(biāo)記名稱</param> /// <param name="mpDefault">想要修改的內(nèi)容</param> /// <param name="mpFileName">INI文件的全路徑</param> /// <returns></returns> [System.Runtime.InteropServices.DllImport("kernel32")] static extern long WritePrivateProfileString(string mpAppName, string mpKeyName, string mpDefault, string mpFileName); }
2,INI文件的擴(kuò)展名為.ini 例如:System.ini 。
3,INI文件格式如下(使用記事本打開):
[ConnectString]
Data Source=192.168.1.97
DataBase=master
Uid=sa
Pwd=1
注解:
[ConnectString] :根節(jié)點(diǎn),進(jìn)行讀寫時(shí)首先需要知曉根節(jié)點(diǎn)值(例如 [ConnectString] 根節(jié)點(diǎn)值為:ConnectString)
DataBase:鍵,通過該鍵可獲取該鍵對(duì)應(yīng)的值,
到此這篇關(guān)于C#對(duì)INI文件進(jìn)行讀寫操作的示例代碼的文章就介紹到這了,更多相關(guān)C#讀寫操作INI內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#面向?qū)ο笤O(shè)計(jì)原則之組合/聚合復(fù)用原則
這篇文章介紹了C#面向?qū)ο笤O(shè)計(jì)原則之組合/聚合復(fù)用原則,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03C#判斷一個(gè)類是否實(shí)現(xiàn)了某個(gè)接口3種實(shí)現(xiàn)方法
這篇文章主要介紹了C#判斷一個(gè)類是否實(shí)現(xiàn)了某個(gè)接口3種實(shí)現(xiàn)方法,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-06-06C#使用OpenCvSharp實(shí)現(xiàn)圖像校正
這篇文章主要為大家詳細(xì)介紹了C#如何使用OpenCvSharp實(shí)現(xiàn)圖像校正功能,文中的示例代碼簡(jiǎn)潔易懂,具有一定的學(xué)習(xí)價(jià)值,需要的小伙伴可以參考下2023-11-11