C#操作INI文件的方法詳解
本文主要介紹通過調用kernel32函數(shù),實現(xiàn)對ini文件的讀取和寫入。
INI文件介紹
INI文件全稱是Initialization File的縮寫,即初始化文件,是windows系統(tǒng)的系統(tǒng)配置文件所采用的存儲格式,統(tǒng)管windows的各項配置。
INI文件由節(jié)、鍵、值組成。
INI文件一般放一些常量或數(shù)據(jù)庫鏈接語句等,再在需要的頁面包含進去,和直接命為asp是沒什么區(qū)別的。
在進行C#程序開發(fā)時,尤其涉及到數(shù)據(jù)庫配置或其他信息,可配置INI文件,方便軟件的靈活配置。
kernel32
kernel32.dll是Windows 9x/Me中非常重要的32位動態(tài)鏈接庫文件,屬于內核級文件。它控制著系統(tǒng)的內存管理、數(shù)據(jù)的輸入輸出操作和中斷處理,當Windows啟動時,kernel32.dll就駐留在內存中特定的寫保護區(qū)域,使別的程序無法占用這個內存區(qū)域。 以上來自百度百科
[DllImport("kernel32")] //讀取INI文件 public static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath); [DllImport("kernel32")]//向INI文件中寫入數(shù)據(jù) public static extern long WritePrivateProfileString(string mpAppName,string mpKeyName,string mpDefault,string mpFileName);
Demo案例
實現(xiàn)功能
調用Kernel32函數(shù)實現(xiàn)ini文件的讀取和寫入。
注意ini的編碼格式為ANSI。在實際軟件編寫時,發(fā)現(xiàn)無法保存為ANSI,網(wǎng)上了解后發(fā)現(xiàn)是ASCI包含中文字符,所有ini需要有中文字符。如果全是英文的話,則無法保存為ASCI,即使保存為ASCI,再次打開后也會變成其他編碼格式。
程序代碼
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace INIOpera { public partial class Form1 : Form { public Form1() { InitializeComponent(); } #region 定義公共變量 public static string strNode = "INFO"; public static string strPath = Application.StartupPath + "\\INFO.ini"; #endregion //引入kernel32函數(shù) [DllImport("kernel32")] //讀取INI文件 public static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath); [DllImport("kernel32")]//向INI文件中寫入數(shù)據(jù) public static extern long WritePrivateProfileString(string mpAppName, string mpKeyName, string mpDefault, string mpFileName); /// <summary> /// 讀取INI文件 /// </summary> /// <param name="section">欲在其中查找條目的小節(jié)名稱。這個字串不區(qū)分大小寫。</param> /// <param name="key">欲獲取的項名或條目名。這個字串不區(qū)分大小寫。</param> /// <param name="def">指定的條目沒有找到時返回的默認值。可設為空("")</param> /// <param name="filePath">完整的INI文件名</param> /// <returns></returns> public static string GetINIFileString(string section,string key, string def, string filePath) { StringBuilder strTemp = new StringBuilder(1024); GetPrivateProfileString(section, key, def, strTemp, 1024, filePath); return strTemp.ToString(); } private void button1_Click(object sender, EventArgs e) { textBox1.Text = GetINIFileString(strNode, "Name","", strPath); } private void button2_Click(object sender, EventArgs e) { textBox2.Text = GetINIFileString(strNode, "Location", "", strPath); } private void button3_Click(object sender, EventArgs e) { textBox3.Text = GetINIFileString(strNode, "IP", "", strPath); } private void button4_Click(object sender, EventArgs e) { textBox4.Text = GetINIFileString(strNode, "ComputerName", "", strPath); } private void button5_Click(object sender, EventArgs e) { textBox5.Text = GetINIFileString(strNode, "WorkAblity", "", strPath); } private void textBox1_TextChanged(object sender, EventArgs e) { } private void textBox2_TextChanged(object sender, EventArgs e) { } private void button6_Click(object sender, EventArgs e) { WritePrivateProfileString(strNode, "Name", textBox10.Text,strPath); } private void button7_Click(object sender, EventArgs e) { WritePrivateProfileString(strNode, "Location", textBox9.Text, strPath); } private void button8_Click(object sender, EventArgs e) { WritePrivateProfileString(strNode, "IP", textBox8.Text, strPath); } private void button9_Click(object sender, EventArgs e) { WritePrivateProfileString(strNode, "ComputerName", textBox7.Text, strPath); } private void button10_Click(object sender, EventArgs e) { WritePrivateProfileString(strNode, "WorkAblity", textBox6.Text, strPath); } } }
擴展作用
INI文件主要保存數(shù)據(jù)庫的參數(shù)信息或其他軟件信息,尤其在進行項目移植中,可以修改配置參數(shù),快速完成軟件程序的調試。
到此這篇關于C#操作INI文件的方法詳解的文章就介紹到這了,更多相關C#操作INI文件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
C#創(chuàng)建數(shù)據(jù)庫及導入sql腳本的方法
這篇文章主要介紹了C#創(chuàng)建數(shù)據(jù)庫及導入sql腳本的方法,涉及C#針對數(shù)據(jù)庫的創(chuàng)建、連接、導入等相關操作技巧,需要的朋友可以參考下2015-12-12C#三種方法獲取文件的Content-Type(MIME Type)
這篇文章介紹了C#獲取文件Content-Type(MIME Type)的三種方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-01-01