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

INI文件讀操作
C#命名空間中沒有直接讀寫INI的類,雖然C#中沒有,但是在"kernel32.dll"這個文件中有Win32的API函數–WritePrivateProfileString()和GetPrivateProfileString()
類文件
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
namespace Files
{
class FilesINI
{
// 聲明INI文件的寫操作函數 WritePrivateProfileString()
[System.Runtime.InteropServices.DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
// 聲明INI文件的讀操作函數 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é)點名稱,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é)點名稱,key=鍵名,temp=上面,path=路徑
GetPrivateProfileString(section, key, "", temp, 255, path);
return temp.ToString();
}
//刪除一個INI文件
public void INIDelete(string FilePath)
{
File.Delete(FilePath);
}
}
}主函數
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;
//聲明默認配置文件路徑
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機器人控制參數", "IP", INIPath);
Port = Convert.ToInt32(ConfigINI.INIRead("Fanuc機器人控制參數", "Port", INIPath));
Speed = Convert.ToInt32(ConfigINI.INIRead("Fanuc機器人控制參數", "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機器人控制參數", "IP", textBox1.Text, INIPath);
}
INI文件寫操作
添加新的配置節(jié)點【KUKA機器人控制參數】
private void button1_Click(object sender, EventArgs e)
{
FilesINI ConfigINI = new FilesINI();
ConfigINI.INIWrite("KUKA機器人控制參數", "IP", textBox1.Text, INIPath);
}
在某個配置節(jié)點下,添加新的關鍵字Angle
private void button1_Click(object sender, EventArgs e)
{
FilesINI ConfigINI = new FilesINI();
ConfigINI.INIWrite("KUKA機器人控制參數", "Angle", textBox1.Text, INIPath);
}
C#讀寫INI文件案例
提示:以下是本篇文章正文內容,下面案例可供參考
一、命名空間
首先需要引用命名空間命名空間
using System.Runtime.InteropServices;
二、函數封裝
代碼如下(示例):
[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">要寫入該健所對應的值</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é)點名稱</param>
/// <param name="key">對應的key</param>
/// <param name="noText">讀不到值時返回的默認值</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三、數據讀寫
代碼如下(示例):
#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對應的value
public string readPwdFromIni()
{
string path = System.AppDomain.CurrentDomain.BaseDirectory;
path += "\\" + "ini" + "\\Password.ini";
string s = ReadIniData("Section_1","pwd","error",path);
return s;
}
//數據讀寫
bool b = WriteIniData("Section_1", "key", value, path);
string s = ReadIniData("Section_2", "key", "error", path);以上內容簡單介紹了C#里面ini文件的讀寫,封裝后的函數可以大幅度地提高編程效率。
到此這篇關于C# 讀寫編輯INI文件的操作的文章就介紹到這了,更多相關C# 讀寫編輯INI文件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
C# Xamarin利用ZXing.Net.Mobile進行掃碼的方法
這篇文章主要介紹了C# Xamarin利用ZXing.Net.Mobile進行掃碼的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-06-06
WinForm中DefWndProc、WndProc與IMessageFilter的區(qū)別
這篇文章主要介紹了WinForm中DefWndProc、WndProc與IMessageFilter的區(qū)別,較為詳細的分析了WinForm的消息處理機制,需要的朋友可以參考下2014-08-08

