C# 读写ini 文件
想要使用C# 读取ini 文件首先可以在Model文件夹中创建一个Class,名为:IniHelper
程序中得内容为:
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.IO;
namespace Mvvmtoolkit.Models
{
public class IniHelper
{
[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);
/// <summary>
/// 读取ini文件
/// </summary>
/// <param name="Section">名称</param>
/// <param name="Key">关键字</param>
/// <param name="defaultText">默认值</param>
/// <param name="iniFilePath">ini文件地址</param>
/// <returns></returns>
public static string GetValue(string Section, string Key, string defaultText, string iniFilePath)
{
if (File.Exists(iniFilePath))
{
StringBuilder temp = new StringBuilder(1024);
GetPrivateProfileString(Section, Key, defaultText, temp, 1024, iniFilePath);
return temp.ToString();
}
else
{
return defaultText;
}
}
/// <summary>
/// 写入ini文件
/// </summary>
/// <param name="Section">名称</param>
/// <param name="Key">关键字</param>
/// <param name="defaultText">默认值</param>
/// <param name="iniFilePath">ini文件地址</param>
/// <returns></returns>
public static bool SetValue(string Section, string Key, string Value, string iniFilePath)
{
var pat = Path.GetDirectoryName(iniFilePath);
if (Directory.Exists(pat) == false)
{
Directory.CreateDirectory(pat);
}
if (File.Exists(iniFilePath) == false)
{
File.Create(iniFilePath).Close();
}
long OpStation = WritePrivateProfileString(Section, Key, Value, iniFilePath);
if (OpStation == 0)
{
return false;
}
else
{
return true;
}
}
}
}
该类中定义了如何读和写Ini 文件得方法,下面介绍如何使用
检查路径下是否存在配置文件,存在的话就写入,否则创建一个
string folderName = Environment.CurrentDirectory + @"\myConfig";
Directory.CreateDirectory(folderName);
string fileName = "config.ini";
string pathString = Path.Combine(folderName, fileName);
// 检查是否存在该文件
if (!File.Exists(pathString))
{
var r = MessageBox.Show($"配置文件不存在,已自动生成...", "注册提示", MessageBoxButton.OK, MessageBoxImage.Information);
FileStream f = new FileStream(pathString, FileMode.Create);//创建文件流
StreamWriter sw = new StreamWriter(f);//创建写入器
sw.Write("Created automatically");//已流的方式写入数据
sw.Close();//关闭写入器
f.Close();//关闭文件流
}
// 向文件中写入字串
if (File.Exists(file))
{
IniHelper.SetValue("本机数据", "MachineID", "对应的Id数据", file);
}
// 读取数据 名称 关键字 默认值(如果读取)
string ReadID = IniHelper.GetValue("本机数据", "MachineID", "", file);
machineID = FingerPrint.Value().ToString();
下面是程序的效果
程序源码下载地址: