ini是一种很古老的配置文件,C#操作ini文件借助windows底层ini操作函数,使用起来很方便;

public class IniHelper
{
[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); [DllImport("kernel32", EntryPoint = "GetPrivateProfileString")]
private static extern uint GetPrivateProfileStringA(string section, string key, string def, byte[] retVal, int size, string filePath); private string FilePath = "";
private string Section = ""; private Dictionary<string, string> List = new Dictionary<string, string>(); /// <summary>
/// INI工具类
/// </summary>
/// <param name="_filePath"></param>
/// <param name="_section"></param>
public IniHelper(string _filePath = "config.ini", string _section = "default")
{
if (_filePath.Contains("\\"))
{
FilePath = _filePath;
}
else
{
FilePath = Application.StartupPath + "\\" + _filePath;
} Section = _section; Reload();
} /// <summary>
/// 重新加载
/// </summary>
public void Reload()
{
this.List = new Dictionary<string, string>(); List<string> keyList = _getKeyList();
foreach (var key in keyList)
{
this.List.Add(key, Get(key));
}
} /// <summary>
/// 获取key列表
/// </summary>
/// <returns></returns>
public string[] GetKeyList()
{
return this.List.Keys.ToArray();
} /// <summary>
/// 获取所有KEY
/// </summary>
/// <returns></returns>
private List<string> _getKeyList()
{
List<string> result = new List<string>();
byte[] buf = new byte[];
uint len = GetPrivateProfileStringA(Section, null, null, buf, buf.Length, FilePath); int j = ;
for (int i = ; i < len; i++)
if (buf[i] == )
{
result.Add(Encoding.Default.GetString(buf, j, i - j));
j = i + ;
} return result;
} /// <summary>
/// 获取值
/// </summary>
/// <param name="key"></param>
/// <param name="defaultVal"></param>
/// <returns></returns>
public string Get(string key, string defaultVal = "")
{
if (this.List.ContainsKey(key))
{
return this.List[key];
} StringBuilder s = new StringBuilder();
GetPrivateProfileString(Section, key, defaultVal, s, , FilePath); return s.ToString();
} /// <summary>
/// 设置值
/// </summary>
/// <param name="key"></param>
/// <param name="val"></param>
public void Set(string key, string val)
{
this.List[key] = val;
WritePrivateProfileString(Section, key, val, FilePath);
} /// <summary>
/// 删除key
/// </summary>
/// <param name="key"></param>
public void Del(string key)
{
this.List.Remove(key);
WritePrivateProfileString(Section, key, null, FilePath);
} /// <summary>
/// 获取int
/// </summary>
/// <param name="key"></param>
/// <param name="defaultVal"></param>
/// <returns></returns>
public int GetInt(string key, int defaultVal = )
{
string str = Get(key, defaultVal.ToString()); int val = defaultVal;
bool bo = int.TryParse(str, out val); return bo ? val : defaultVal;
} /// <summary>
/// 获取float
/// </summary>
/// <param name="key"></param>
/// <param name="defaultVal"></param>
/// <returns></returns>
public float GetFloat(string key, float defaultVal = )
{
string str = Get(key, defaultVal.ToString()); float val = defaultVal;
bool bo = float.TryParse(str, out val); return bo ? val : defaultVal;
} /// <summary>
/// 获取bool
/// </summary>
/// <param name="key"></param>
/// <param name="defaultVal"></param>
/// <returns></returns>
public bool GetBool(string key, bool defaultVal = false)
{
string str = Get(key, defaultVal ? "" : ""); return str == "";
} /// <summary>
/// 设置int
/// </summary>
/// <param name="key"></param>
/// <param name="val"></param>
public void SetInt(string key, int val)
{
Set(key, val.ToString());
} /// <summary>
/// 设置float
/// </summary>
/// <param name="key"></param>
/// <param name="val"></param>
public void SetFloat(string key, float val)
{
Set(key, val.ToString());
} /// <summary>
/// 设置bool
/// </summary>
/// <param name="key"></param>
/// <param name="bo"></param>
public void SetBool(string key, bool bo)
{
Set(key, bo ? "" : "");
}
}

C# INI配置文件读写类的更多相关文章

  1. C++[类设计] ini配置文件读写类config

      //in Config.h #pragma once #include <windows.h> #include <shlwapi.h> #pragma comment(l ...

  2. 【个人使用.Net类库】(1)INI配置文件操作类

    开发接口程序时,对于接口程序配置的IP地址.端口等都需要是可配置的,而在Win Api原生实现了INI文件的读写操作,因此只需要调用Win Api中的方法即可操作INI配置文件,关键代码就是如何调用W ...

  3. [IO] C# INI文件读写类与源码下载 (转载)

    /// <summary> /// 类说明:INI文件读写类. /// 编 码 人:苏飞 /// 联系方式:361983679 /// 更新网站:[url]http://www.sufei ...

  4. C# ini配置文件操作类

    /// <summary> /// INI文件操作类 /// </summary> public class IniFileHelper { /// <summary&g ...

  5. c#通用配置文件读写类(xml,ini,json)

    .NET下编写程序的时候经常会使用到配置文件.配置文件格式通常有xml.ini.json等几种,操作不同类型配置文件需要使用不同的方法,操作较为麻烦.特别是针对同时应用不同格式配置文件的时候,很容易引 ...

  6. c#通用配置文件读写类与格式转换(xml,ini,json)

    .NET下编写程序的时候经常会使用到配置文件.配置文件格式通常有xml.ini.json等几种,操作不同类型配置文件需要使用不同的方法,操作较为麻烦.特别是针对同时应用不同格式配置文件的时候,很容易引 ...

  7. 【转载】C++针对ini配置文件读写大全

    http://blog.csdn.net/hgy413/article/details/6666374# ini文件(Initialization file),这种类型的文件中通常存放的是一个程序的初 ...

  8. vc ini配置文件读写

    ini文件(即Initialization file),这种类型的文件中通常存放的是一个程序的初始化信息.ini文件由若干个节(Section)组成,每个Section由若干键(Key)组成,每个Ke ...

  9. C# 如何实现完整的INI文件读写类

    作者: 魔法软糖 日期: 2020-02-27 引言 ************************************* .ini 文件是Initialization File的缩写,即配置文 ...

随机推荐

  1. Odoo定时任务(自动任务)

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826270.html  一:定时任务模型 Odoo中内置了一个定时任务模型  ir.cron ,它定义了一 ...

  2. linux 常用工具记录及简介

    前言 linuxz虽然各种软件的生态还比较差,但是大势所趋,早晚都是要用的.记录下自己常用的软件,要是那天系统崩了重装也舒服点 编程工具 pycharm专业版(社区版也能用,只是用惯了专业版) * 下 ...

  3. 使用NB Exploit Kit攻击的APT样本分析——直接看流程图,就是网页挂马,利用java和flash等漏洞来在你主机安装和运行恶意软件

    使用NB Exploit Kit攻击的APT样本分析 from:https://cloud.tencent.com/developer/article/1092136 1.起因 近期,安恒工程师在某网 ...

  4. 201671010426 孙锦喆 实验十四 团队项目评审&课程学习总结

    徐明锦 徐明锦 2 95 2019-06-30T14:54:00Z 2019-06-30T14:54:00Z 9 608 3472 28 8 4072 14.00 Clean Clean false ...

  5. HDU6701:Make Rounddog Happy(启发式分治)

    题意:给定数组a[],求区间个数,满足区间的数各不同,而且满足maxval-len<=K: 思路:一看就可以分治做,对于当前的区间,从max位置分治. 对于这一层,需要高效的统计答案,那么对短的 ...

  6. spi调试步骤,mcp2515调试整理

    1.先查看也硬件电路,一般都是单片机作为master,其他芯片作为slave.单片机的MOSI对应从机的SI,单片机的MISO对应从机的SO,如果两个引脚接反了,那是怎么调试都没有效果的. 2.单片机 ...

  7. Is Safari on iOS 6 caching $.ajax results? post Cache

    https://stackoverflow.com/questions/12506897/is-safari-on-ios-6-caching-ajax-results Since the upgra ...

  8. k-mean

    import numpy as np from k_initialize_cluster import k_init np.random.seed() class YOLO_Kmeans: def _ ...

  9. 08_STP(数通华为)

    1. 网络拓扑 2. 激活生成树[SW1]stp mode stp [SW1]stp enable [SW2]stp mode stp [SW2]stp enable [SW3]stp mode st ...

  10. paython基础-格式化输出

    目录 %s %r %d 及其他%... formate f"{变量}" 详细查找:https://docs.python.org/3/library/string.html#for ...