using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace TeamAAS_VP.Core
{
///
/// INI配置文件操作类(使用 Windows API)
///
public class IniConfigHelper
{
private readonly string _filePath;
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
public IniConfigHelper(string iniFileName = "config.ini")
{
// 判断路径1
if (IsPathContainingDirectory(iniFileName))
{
if (!Directory.Exists(System.IO.Path.GetDirectoryName(iniFileName)))
{
Directory.CreateDirectory(Path.GetDirectoryName(iniFileName));
}
_filePath=iniFileName;
}
else
{
// 配置文件存储路径(应用程序所在目录)
_filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, iniFileName);
}
// 如果文件不存在则创建
if (!File.Exists(_filePath))
{
File.Create(_filePath).Close();
}
}
public void WriteValue(string section, string key, string value)
{
WritePrivateProfileString(section, key, value, _filePath);
}
public string ReadValue(string section, string key, string defaultValue = "")
{
var sb = new StringBuilder(255);
GetPrivateProfileString(section, key, defaultValue, sb, 255, _filePath);
return sb.ToString();
}
///
/// 判断路径是否包含文件夹路径
///
///
///
public bool IsPathContainingDirectory(string path)
{
// 获取文件夹路径部分
string directory = Path.GetDirectoryName(path);
// 如果目录部分不为空,则表示路径包含文件夹路径
return !string.IsNullOrEmpty(directory);
}
}
}