C#?讀寫編輯INI文件的操作
C# 讀寫編輯INI文件
INI文件概念
INI就是擴(kuò)展名為"INI"的文件,其實(shí)他本身是個文本文件,可以用記事本打開,主要存放的是用戶所做的選擇或系統(tǒng)的各種參數(shù)。
C#讀寫ini文件其實(shí)并不是普通的文本文件.它有自己的結(jié)構(gòu).由若干段落(SECTION)組成,在每個帶括號的標(biāo)題下面,是若干個以單個單詞開頭的關(guān)鍵字(KEYWORD)和一個等號,等號右邊就是關(guān)鍵字的值(VALUE),例如,
[Section1]
KeyWord1 = Value1 KeyWord2 = Value2 ...
[Section2]
KeyWord3 = Value3 KeyWord4 = Value4

INI文件讀操作
C#命名空間中沒有直接讀寫INI的類,雖然C#中沒有,但是在"kernel32.dll"這個文件中有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();
}
//刪除一個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);
}
在某個配置節(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">要寫入該健所對應(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">對應(yīng)的key</param>
/// <param name="noText">讀不到值時返回的默認(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對應(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)容簡單介紹了C#里面ini文件的讀寫,封裝后的函數(shù)可以大幅度地提高編程效率。
到此這篇關(guān)于C# 讀寫編輯INI文件的操作的文章就介紹到這了,更多相關(guān)C# 讀寫編輯INI文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#實(shí)現(xiàn)gRPC服務(wù)和調(diào)用示例詳解
gRPC?是一種與語言無關(guān)的高性能遠(yuǎn)程過程調(diào)用?(RPC)?框架,這篇文章主要為大家詳細(xì)介紹了C#如何實(shí)現(xiàn)gRPC服務(wù)和調(diào)用,需要的可以參考一下2024-01-01
C#數(shù)據(jù)結(jié)構(gòu)與算法揭秘二 線性結(jié)構(gòu)
本文中,我們討論了什么是線性結(jié)構(gòu),線性結(jié)構(gòu)有哪些特點(diǎn),并且詳細(xì)介紹了一個最簡單線性結(jié)構(gòu)順序表,并且通過源代碼對她進(jìn)行一些列的分析,最后還舉了兩個例子,讓我們更好的理解順序表2012-11-11
C#byte數(shù)組與Image的相互轉(zhuǎn)換實(shí)例代碼
這篇文章主要介紹了C#byte數(shù)組與Image的相互轉(zhuǎn)換實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-04-04

