using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
namespace CSFrameworkV5.Core
{
///
/// 操作INI文件类
///
public class IniFile
{
private string _path; //INI档案名
public string IniPath
{
get => _path;
set => _path = value;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
public struct STRINGBUFFER
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
public string szText;
}
//读写INI文件的API函数
[DllImport("kernel32", CharSet = CharSet.Auto)]
private static extern long WritePrivateProfileString(string section,
string key, string val, string filePath);
//读写INI文件的API函数
[DllImport("kernel32", CharSet = CharSet.Auto)]
private static extern int GetPrivateProfileString(string section,
string key, string def, out STRINGBUFFER retVal, int size,
string filePath);
//类的构造函数,传递INI档案名
public IniFile(string INIPath)
{
_path = INIPath;
if (!File.Exists(_path)) CreateIniFile();
}
///
/// 写INI文件
///
///
///
///
public void IniWriteValue(string Section, string Key, string Value)
{
WritePrivateProfileString(Section, Key, Value, _path);
}
///
/// 读取INI文件指定关键字的值
///
///
///
///
public string IniReadValue(string Section, string Key)
{
int i;
STRINGBUFFER RetVal;
i = GetPrivateProfileString(Section, Key, null, out RetVal, 1024,
_path);
var temp = RetVal.szText;
return temp.Trim();
}
///
/// 读取INI文件指定关键字的值
///
///
///
///
///
public string IniReadValue(string Section, string Key,
string defaultValue)
{
int i;
STRINGBUFFER RetVal;
i = GetPrivateProfileString(Section, Key, null, out RetVal, 1024,
_path);
var temp = RetVal.szText.Trim();
return string.IsNullOrEmpty(temp) ? defaultValue : temp;
}
///
/// 创建INI文件
///
public void CreateIniFile()
{
var w = File.CreateText(_path);
w.Write("");
w.Flush();
w.Close();
}
}
}