C#操作INI文件的方法詳解
本文主要介紹通過(guò)調(diào)用kernel32函數(shù),實(shí)現(xiàn)對(duì)ini文件的讀取和寫(xiě)入。
INI文件介紹
INI文件全稱(chēng)是Initialization File的縮寫(xiě),即初始化文件,是windows系統(tǒng)的系統(tǒng)配置文件所采用的存儲(chǔ)格式,統(tǒng)管windows的各項(xiàng)配置。
INI文件由節(jié)、鍵、值組成。
INI文件一般放一些常量或數(shù)據(jù)庫(kù)鏈接語(yǔ)句等,再在需要的頁(yè)面包含進(jìn)去,和直接命為asp是沒(méi)什么區(qū)別的。
在進(jìn)行C#程序開(kāi)發(fā)時(shí),尤其涉及到數(shù)據(jù)庫(kù)配置或其他信息,可配置INI文件,方便軟件的靈活配置。
kernel32
kernel32.dll是Windows 9x/Me中非常重要的32位動(dòng)態(tài)鏈接庫(kù)文件,屬于內(nèi)核級(jí)文件。它控制著系統(tǒng)的內(nèi)存管理、數(shù)據(jù)的輸入輸出操作和中斷處理,當(dāng)Windows啟動(dòng)時(shí),kernel32.dll就駐留在內(nèi)存中特定的寫(xiě)保護(hù)區(qū)域,使別的程序無(wú)法占用這個(gè)內(nèi)存區(qū)域。 以上來(lái)自百度百科
[DllImport("kernel32")] //讀取INI文件
public static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
[DllImport("kernel32")]//向INI文件中寫(xiě)入數(shù)據(jù)
public static extern long WritePrivateProfileString(string mpAppName,string mpKeyName,string mpDefault,string mpFileName);
Demo案例
實(shí)現(xiàn)功能
調(diào)用Kernel32函數(shù)實(shí)現(xiàn)ini文件的讀取和寫(xiě)入。


注意ini的編碼格式為ANSI。在實(shí)際軟件編寫(xiě)時(shí),發(fā)現(xiàn)無(wú)法保存為ANSI,網(wǎng)上了解后發(fā)現(xiàn)是ASCI包含中文字符,所有ini需要有中文字符。如果全是英文的話,則無(wú)法保存為ASCI,即使保存為ASCI,再次打開(kāi)后也會(huì)變成其他編碼格式。
程序代碼
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文件中寫(xiě)入數(shù)據(jù)
public static extern long WritePrivateProfileString(string mpAppName, string mpKeyName, string mpDefault, string mpFileName);
/// <summary>
/// 讀取INI文件
/// </summary>
/// <param name="section">欲在其中查找條目的小節(jié)名稱(chēng)。這個(gè)字串不區(qū)分大小寫(xiě)。</param>
/// <param name="key">欲獲取的項(xiàng)名或條目名。這個(gè)字串不區(qū)分大小寫(xiě)。</param>
/// <param name="def">指定的條目沒(méi)有找到時(shí)返回的默認(rèn)值??稍O(shè)為空("")</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);
}
}
}擴(kuò)展作用
INI文件主要保存數(shù)據(jù)庫(kù)的參數(shù)信息或其他軟件信息,尤其在進(jìn)行項(xiàng)目移植中,可以修改配置參數(shù),快速完成軟件程序的調(diào)試。
到此這篇關(guān)于C#操作INI文件的方法詳解的文章就介紹到這了,更多相關(guān)C#操作INI文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解如何在C#中循環(huán)訪問(wèn)目錄樹(shù)
在C#中,訪問(wèn)文件系統(tǒng)是常見(jiàn)的需求之一,有時(shí)我們需要遍歷目錄樹(shù)以執(zhí)行某些操作,例如搜索文件、計(jì)算目錄大小或執(zhí)行批量處理,本文將詳細(xì)介紹如何在C#中循環(huán)訪問(wèn)目錄樹(shù),并提供一個(gè)完整的示例,需要的朋友可以參考下2024-08-08
C#使用kernel32.dll讀寫(xiě)INI文件的案例詳解
INI就是擴(kuò)展名為"INI"的文件,其實(shí)他本身是個(gè)文本文件,可以用記事本打開(kāi),主要存放的是用戶所做的選擇或系統(tǒng)的各種參數(shù),這篇文章主要介紹了C#使用kernel32.dll讀寫(xiě)INI文件的方法,需要的朋友可以參考下2023-05-05
C#檢查Windows是否安裝了某個(gè)服務(wù)的方法
這篇文章主要介紹了C#檢查Windows是否安裝了某個(gè)服務(wù)的方法,涉及C#操作windows系統(tǒng)服務(wù)的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03
通過(guò)C#實(shí)現(xiàn)在Word中插入或刪除分節(jié)符
在Word中,分節(jié)符是一種強(qiáng)大的工具,用于將文檔分成不同的部分,每個(gè)部分可以有獨(dú)立的頁(yè)面設(shè)置,如頁(yè)邊距、紙張方向、頁(yè)眉和頁(yè)腳等,本文將介紹如何使用一個(gè)免費(fèi)的.NET庫(kù)通過(guò)C#實(shí)現(xiàn)插入或刪除Word分節(jié)符,需要的朋友可以參考下2024-08-08
C#對(duì)圖片進(jìn)行馬賽克處理可控制模糊程度的實(shí)現(xiàn)代碼
本文通過(guò)實(shí)例代碼給大家介紹了C#對(duì)圖片進(jìn)行馬賽克處理可控制模糊程度的實(shí)現(xiàn)方法,代碼超簡(jiǎn)單,具有一定的參考借鑒價(jià)值,感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧2018-05-05

