c#读取INI文件实例
读取ini文件内容,将读取的内容放在指定位置;将内容写入到ini文件中
如图为项目界面
1 c# 读取ini文件方法
1.1 在类中配置API
#region API函数声明-必须放在类中
[DllImport("kernel32")]//返回0表示失败,非0为成功
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);
#endregion
1.2 编写读取方法
#region 读Ini文件
/// <summary>
/// 读取ini文件内容的方法
/// </summary>
/// <param name="Section">ini文件的节名</param>
/// <param name="Key">ini文件对应节下的健名</param>
/// <param name="NoText">ini文件对应节对应健下无内容时返回的值</param>
/// <param name="iniFilePath">该ini文件的路径</param>
/// <returns></returns>
public static string ReadIniData(string Section, string Key, string NoText, string iniFilePath)
{
if (File.Exists(iniFilePath))
{
StringBuilder temp = new StringBuilder(1024);
GetPrivateProfileString(Section, Key, NoText, temp, 1024, iniFilePath);
return temp.ToString();
}
else
{
return String.Empty;
}
}
#endregion
1.3 在按钮点击事件中调用读取方法
private void button1_Click(object sender, EventArgs e)
{
label1.Text = ReadIniData("section_1", "section_1_key1", "no_section_1_key1_text", @"F:\c sharp learning\get_Ini_text\myinifile.ini");
label2.Text = ReadIniData("section_2", "section_2_key2", "no_section_2_key1_text", @"F:\c sharp learning\get_Ini_text\myinifile.ini");
label3.Text = ReadIniData("section_3", "section_3_key3", "no_section_3_key3_text", @"F:\c sharp learning\get_Ini_text\myinifile.ini");
}
1.4 读取ini文件结果
2 将内容写入INI文件方法如下
2.1 方法
#region 写Ini文件
/// <summary>
/// 将内容写入指定的ini文件中
/// </summary>
/// <param name="Section">ini文件中的节名</param>
/// <param name="Key">ini文件中的键</param>
/// <param name="Value">要写入该键所对应的值</param>
/// <param name="iniFilePath">ini文件路径</param>
/// <returns></returns>
public static bool WriteIniData(string Section, string Key, string Value, string iniFilePath)
{
if (File.Exists(iniFilePath))
{
long OpStation = WritePrivateProfileString(Section, Key, Value, iniFilePath);
if (OpStation == 0)
{
return false;
}
else
{
return true;
}
}
else
{
return false;
}
}
#endregion
2.2 测试
在按钮的点击事件中调用该方法
private void button2_Click(object sender, EventArgs e)
{
if (WriteIniData("section_4", "section_4_key4", "刚写入该键下的值", @"F:\c sharp learning\get_Ini_text\my_ini_file.ini"))
MessageBox.Show("写入ini文件成功");
else
MessageBox.Show("写入ini文件失败");
}
2.3 结果
2.3.1 点击界面按钮
2.3.2 查看ini文件
3 代码总览
using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;
namespace get_Ini_text
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
#region API函数声明-必须放在类中
[DllImport("kernel32")]//返回0表示失败,非0为成功
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);
#endregion
#region 读Ini文件
/// <summary>
/// 读取ini文件内容的方法
/// </summary>
/// <param name="Section">ini文件的节名</param>
/// <param name="Key">ini文件对应节下的健名</param>
/// <param name="NoText">ini文件对应节对应健下无内容时返回的值</param>
/// <param name="iniFilePath">该ini文件的路径</param>
/// <returns></returns>
public static string ReadIniData(string Section, string Key, string NoText, string iniFilePath)
{
if (File.Exists(iniFilePath))
{
StringBuilder temp = new StringBuilder(1024);
GetPrivateProfileString(Section, Key, NoText, temp, 1024, iniFilePath);
return temp.ToString();
}
else
{
return String.Empty;
}
}
#region 写Ini文件
/// <summary>
/// 将内容写入指定的ini文件中
/// </summary>
/// <param name="Section">ini文件中的节名</param>
/// <param name="Key">ini文件中的键</param>
/// <param name="Value">要写入该键所对应的值</param>
/// <param name="iniFilePath">ini文件路径</param>
/// <returns></returns>
public static bool WriteIniData(string Section, string Key, string Value, string iniFilePath)
{
if (File.Exists(iniFilePath))
{
long OpStation = WritePrivateProfileString(Section, Key, Value, iniFilePath);
if (OpStation == 0)
{
return false;
}
else
{
return true;
}
}
else
{
return false;
}
}
#endregion
#endregion
private void button1_Click(object sender, EventArgs e)
{
label1.Text = ReadIniData("section_1", "section_1_key1", "no_section_1_key1_text", @"F:\c sharp learning\get_Ini_text\my_ini_file.ini");
label2.Text = ReadIniData("section_2", "section_2_key2", "no_section_2_key1_text", @"F:\c sharp learning\get_Ini_text\my_ini_file.ini");
label3.Text = ReadIniData("section_3", "section_3_key3", "no_section_3_key3_text", @"F:\c sharp learning\get_Ini_text\my_ini_file.ini");
}
private void button2_Click(object sender, EventArgs e)
{
if (WriteIniData("section_4", "section_4_key4", "刚写入该键下的值", @"F:\c sharp learning\get_Ini_text\my_ini_file.ini"))
MessageBox.Show("写入ini文件成功");
else
MessageBox.Show("写入ini文件失败");
}
}
}
4 引用
https://www.jb51.net/article/143380.htm