C#?讀寫編輯INI文件的操作
C# 讀寫編輯INI文件
INI文件概念
INI就是擴(kuò)展名為"INI"的文件,其實(shí)他本身是個(gè)文本文件,可以用記事本打開,主要存放的是用戶所做的選擇或系統(tǒng)的各種參數(shù)。
C#讀寫ini文件其實(shí)并不是普通的文本文件.它有自己的結(jié)構(gòu).由若干段落(SECTION)組成,在每個(gè)帶括號(hào)的標(biāo)題下面,是若干個(gè)以單個(gè)單詞開頭的關(guān)鍵字(KEYWORD)和一個(gè)等號(hào),等號(hào)右邊就是關(guān)鍵字的值(VALUE),例如,
[Section1]
KeyWord1 = Value1 KeyWord2 = Value2 ...
[Section2]
KeyWord3 = Value3 KeyWord4 = Value4
INI文件讀操作
C#命名空間中沒有直接讀寫INI的類,雖然C#中沒有,但是在"kernel32.dll"這個(gè)文件中有Win32的API函數(shù)–WritePrivateProfileString()和GetPrivateProfileString()
類文件
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; namespace Files { class FilesINI { // 聲明INI文件的寫操作函數(shù) WritePrivateProfileString() [System.Runtime.InteropServices.DllImport("kernel32")] private static extern long WritePrivateProfileString(string section, string key, string val, string filePath); // 聲明INI文件的讀操作函數(shù) GetPrivateProfileString() [System.Runtime.InteropServices.DllImport("kernel32")] private static extern int GetPrivateProfileString(string section, string key, string def, System.Text.StringBuilder retVal, int size, string filePath); /// 寫入INI的方法 public void INIWrite(string section, string key, string value,string path) { // section=配置節(jié)點(diǎn)名稱,key=鍵名,value=返回鍵值,path=路徑 WritePrivateProfileString(section, key, value, path); } //讀取INI的方法 public string INIRead(string section, string key,string path) { // 每次從ini中讀取多少字節(jié) System.Text.StringBuilder temp = new System.Text.StringBuilder(255); // section=配置節(jié)點(diǎn)名稱,key=鍵名,temp=上面,path=路徑 GetPrivateProfileString(section, key, "", temp, 255, path); return temp.ToString(); } //刪除一個(gè)INI文件 public void INIDelete(string FilePath) { File.Delete(FilePath); } } }
主函數(shù)
using Files; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace INI文件讀寫操作 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } string IP; int Port; int Speed; //聲明默認(rèn)配置文件路徑 public string INIPath = Convert.ToString(System.AppDomain.CurrentDomain.BaseDirectory) + "Config.ini"; private void Form1_Load(object sender, EventArgs e) { FilesINI ConfigINI = new FilesINI(); IP = ConfigINI.INIRead("Fanuc機(jī)器人控制參數(shù)", "IP", INIPath); Port = Convert.ToInt32(ConfigINI.INIRead("Fanuc機(jī)器人控制參數(shù)", "Port", INIPath)); Speed = Convert.ToInt32(ConfigINI.INIRead("Fanuc機(jī)器人控制參數(shù)", "Speed", INIPath)); textBox1.Text = IP; textBox2.Text = Port.ToString(); textBox3.Text = Speed.ToString(); } } }
INI文件修改操作
修改IP
private void button1_Click(object sender, EventArgs e) { FilesINI ConfigINI = new FilesINI(); ConfigINI.INIWrite("Fanuc機(jī)器人控制參數(shù)", "IP", textBox1.Text, INIPath); }
INI文件寫操作
添加新的配置節(jié)點(diǎn)【KUKA機(jī)器人控制參數(shù)】
private void button1_Click(object sender, EventArgs e) { FilesINI ConfigINI = new FilesINI(); ConfigINI.INIWrite("KUKA機(jī)器人控制參數(shù)", "IP", textBox1.Text, INIPath); }
在某個(gè)配置節(jié)點(diǎn)下,添加新的關(guān)鍵字Angle
private void button1_Click(object sender, EventArgs e) { FilesINI ConfigINI = new FilesINI(); ConfigINI.INIWrite("KUKA機(jī)器人控制參數(shù)", "Angle", textBox1.Text, INIPath); }
C#讀寫INI文件案例
提示:以下是本篇文章正文內(nèi)容,下面案例可供參考
一、命名空間
首先需要引用命名空間命名空間
using System.Runtime.InteropServices;
二、函數(shù)封裝
代碼如下(示例):
[DllImport("kernel32")] private static extern long WritePrivateProfileString(string section, string key, string val, string filePath); [DllImport("kernel32")] private static extern long GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath); #region 創(chuàng)建文件 public static void CreateFile(string path) { if (!string.IsNullOrEmpty(path)) { try { string dr = Path.GetDirectoryName(path); if (!Directory.Exists(dr)) { Directory.CreateDirectory(dr); } if (!File.Exists(path)) { FileStream fs = File.Create(path); fs.Close(); } } catch (Exception e) { } } } #endregion #region 寫ini文件 ///<param name="Selection">ini文件中的節(jié)名</param> ///<param name="key">ini 文件中的健</param> ///<param name="value">要寫入該健所對(duì)應(yīng)的值</param> ///<param name="iniFilePath">ini文件路徑</param> public static bool WriteIniData(string Section, string key, string val, string inifilePath) { if (File.Exists(inifilePath)) { long opSt = WritePrivateProfileString(Section, key, val, inifilePath); if (opSt == 0) { return false; } else { return true; } } else { CreateFile(inifilePath); long opSt = WritePrivateProfileString(Section, key, val, inifilePath); if (opSt == 0) { return false; } else { return true; } } } #endregion #region 取ini文件 /// <param name="section">節(jié)點(diǎn)名稱</param> /// <param name="key">對(duì)應(yīng)的key</param> /// <param name="noText">讀不到值時(shí)返回的默認(rèn)值</param> /// <param name="iniFilePath">文件路徑</param> public static string ReadIniData(string section, string key, string noText, string iniFilePath) { if (File.Exists(iniFilePath)) { StringBuilder temp = new StringBuilder(1024); long k = GetPrivateProfileString(section, key, noText, temp, 1024, iniFilePath); if (k != 0) { return temp.ToString(); } else { return string.Empty; } } else { return string.Empty; } } #endregion
三、數(shù)據(jù)讀寫
代碼如下(示例):
#region 把key——value寫入ini文件 public bool savePwdToIni(string pwd) { string path = System.AppDomain.CurrentDomain.BaseDirectory; path += "\\" + "ini" + "\\Password.ini"; bool b = WriteIniData("Section_1","pwd",pwd,path); return b; } #endregion #region 從路徑下的ini文件讀取key對(duì)應(yīng)的value public string readPwdFromIni() { string path = System.AppDomain.CurrentDomain.BaseDirectory; path += "\\" + "ini" + "\\Password.ini"; string s = ReadIniData("Section_1","pwd","error",path); return s; } //數(shù)據(jù)讀寫 bool b = WriteIniData("Section_1", "key", value, path); string s = ReadIniData("Section_2", "key", "error", path);
以上內(nèi)容簡(jiǎn)單介紹了C#里面ini文件的讀寫,封裝后的函數(shù)可以大幅度地提高編程效率。
到此這篇關(guān)于C# 讀寫編輯INI文件的操作的文章就介紹到這了,更多相關(guān)C# 讀寫編輯INI文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
c#創(chuàng)建windows服務(wù)(Windows Services)詳細(xì)步驟
這篇文章主要介紹了c#創(chuàng)建windows服務(wù)(Windows Services)詳細(xì)步驟,大家參考使用吧2013-12-12詳解DataGridView控件的數(shù)據(jù)綁定
本文詳細(xì)講解了DataGridView控件的數(shù)據(jù)綁定,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02C# 快速高效率復(fù)制對(duì)象(表達(dá)式樹)
在代碼中經(jīng)常會(huì)遇到需要把對(duì)象復(fù)制一遍,或者把屬性名相同的值復(fù)制一遍。本文將對(duì)其解決方法進(jìn)行詳細(xì)介紹。下面跟著小編一起來(lái)看下吧2017-04-04C#實(shí)現(xiàn)變量交換、斐波那契數(shù)列、質(zhì)數(shù)、回文方法合集
這篇文章介紹了C#實(shí)現(xiàn)變量交換、斐波那契數(shù)列、質(zhì)數(shù)、回文的方法合集,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02C#如何在窗體程序中操作數(shù)據(jù)庫(kù)數(shù)據(jù)
這篇文章主要介紹了C#如何在窗體程序中操作數(shù)據(jù)庫(kù)數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04C# 文件上傳下載(Excel導(dǎo)入,多線程下載)功能的實(shí)現(xiàn)代碼
這篇文章主要介紹了C# 文件上傳下載(Excel導(dǎo)入,多線程下載)功能的實(shí)現(xiàn)代碼,需要的朋友可以參考下2017-08-08C#模擬實(shí)現(xiàn)鼠標(biāo)自動(dòng)點(diǎn)擊與消息發(fā)送功能
這篇文章主要為大家詳細(xì)介紹了C#如何利用windows api來(lái)模擬實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊、右擊、雙擊以及發(fā)送文本功能,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2022-08-08基于C# 中可以new一個(gè)接口?的問(wèn)題分析
本篇文章是對(duì)C#中可以new一個(gè)接口?的問(wèn)題進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05