c# 读写ini文件

//在 Ini 文件中写数据
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);

//读取 Ini 文件中的数据
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);

//读取所有Sections
[DllImport("kernel32", EntryPoint = "GetPrivateProfileString")]
private static extern uint GetPrivateProfileStringA(string section, string key, string def, Byte[] retVal, int size, string filePath);

/// <summary>
/// 创建Ini文件,并写入数据
/// </summary>
/// <param name="section">根节点</param>
/// <param name="key">键</param>
/// <param name="val">值</param>
/// <param name="filePath">路径</param>
public static void WriteIniData(string section, string key, string val, string filePath)
{
  if (!File.Exists(filePath))
  {
    var fs = File.Create(filePath);
    fs.Dispose();
    fs.Close();
  }
  WritePrivateProfileString(section, key, val, filePath);
}

/// <summary>
/// 读取 Ini 文件
/// </summary>
/// <param name="section">根节点</param>
/// <param name="key">键</param>
/// <param name="def">默认数据</param>
/// <param name="retVal">返回数据</param>
/// <param name="size">大小</param>
/// <param name="filePath">路径</param>
public static void ReadIniData(string section, string key, string def, StringBuilder retVal, int size, string filePath)
{
  GetPrivateProfileString(section, key, def, retVal, size, filePath);
}

public static List<string> ReadAllSection(string filePath)
{
  List<string> result = new List<string>();
  Byte[] buf = new Byte[65536];
  uint len = GetPrivateProfileStringA(null, null, null, buf, buf.Length, filePath);
  int j = 0;
  for (int i = 0; i < len; i++)
  {
    if (buf[i] == 0)
    {
      result.Add(Encoding.Default.GetString(buf, j, i - j));
      j = i + 1;
    }
  }
  return result;
}

 

posted @ 2018-01-03 16:23  叁王爷  阅读(292)  评论(0编辑  收藏  举报