C#操作ini文件的读写
首先创建一个IniFiles类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.IO;
namespace IniFiles
{
public class IniFiles
{
public string iniPath;
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
[DllImport("kernel32")]
public static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
/// <summary>
/// 构造函数
/// </summary>
/// <param name="INIPath">路径</param>
public IniFiles(string INIPath)
{
iniPath = INIPath;
if (!File.Exists(iniPath))
{
try
{
File.Create(iniPath);
}
catch (Exception)
{ }
}
}
/// <summary>
/// 向ini文件中写入值
/// </summary>
/// <param name="Section">表头</param>
/// <param name="Key">键</param>
/// <param name="Value">值</param>
public void IniWriteValue(string Section, string Key, string Value)
{
WritePrivateProfileString(Section, Key, Value, this.iniPath);
}
/// <summary>
/// 从ini中得到int类型的值
/// </summary>
/// <param name="Section">表头</param>
/// <param name="Key">键</param>
/// <returns></returns>
public int IniReadIntValue(string Section, string Key)
{
StringBuilder temp = new StringBuilder(1024);
GetPrivateProfileString(Section, Key, "", temp, 1024, this.iniPath);
if (temp.Length == 0)
{
WritePrivateProfileString(Section, Key, "0", this.iniPath);
}
return Convert.ToInt32(temp.ToString());
}
/// <summary>
/// 从ini中得到double类型的值
/// </summary>
/// <param name="Section">表头</param>
/// <param name="Key">键</param>
/// <returns></returns>
public double IniReadDoubleValue(string Section, string Key)
{
StringBuilder temp = new StringBuilder(1024);
GetPrivateProfileString(Section, Key, "", temp, 1024, this.iniPath);
if (temp.Length == 0)
{
WritePrivateProfileString(Section, Key, "0", this.iniPath);
}
return Convert.ToDouble(temp.ToString());
}
/// <summary>
/// 从ini中得到string类型的值
/// </summary>
/// <param name="Section">表头</param>
/// <param name="Key">键</param>
/// <returns></returns>
public string IniReadStringValue(string Section, string Key)
{
StringBuilder temp = new StringBuilder(1024);
GetPrivateProfileString(Section, Key, "", temp, 1024, this.iniPath);
if (temp.Length == 0)
{
WritePrivateProfileString(Section, Key, "0", this.iniPath);
}
return temp.ToString();
}
/// <summary>
/// 判断文件是否存在
/// </summary>
/// <returns></returns>
public bool ExistINIFile()
{
return File.Exists(iniPath);
}
/// <summary>
/// 判断键值是否相同
/// </summary>
/// <param name="Section">表头</param>
/// <param name="Key">键</param>
/// <param name="Value">值</param>
/// <param name="specBeefore">设定值</param>
public void IniWriteValue(string Section, string Key, string Value, string specBeefore)
{
if (Value != specBeefore)
{
WritePrivateProfileString(Section, Key, Value, this.iniPath);
}
}
}
}
在winform中对这个方法进行引用和调用
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using IniFiles;//我们创建的类
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//IniFiles ini = new IniFiles(AppDomain.CurrentDomain.BaseDirectory + "apec.ini");
IniFiles.IniFiles ini;
private void Form1_Load(object sender, EventArgs e)
{
//窗体加载事件中,创建这个ini文件,并向里面写入值
ini = new IniFiles.IniFiles(AppDomain.CurrentDomain.BaseDirectory + "apec.ini");
ini.IniWriteValue("row", "2", "3");
}
private void button1_Click(object sender, EventArgs e)
{
//ini.IniWriteValue("row",
}
private void button2_Click(object sender, EventArgs e)
{
// double a;
//从ini中得到刚才写入的值,这里label1.text是string类型,所以用ini.IniReadStringValue
//double类型的用ini.IniReadDoubleValue
//int类型的用ini.IniReadIntValue
label1.Text = ini.IniReadStringValue("row", "2");
}
}
}

浙公网安备 33010602011771号