C# INI配置文件读写类
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配置文件读写类的更多相关文章
- C++[类设计] ini配置文件读写类config
//in Config.h #pragma once #include <windows.h> #include <shlwapi.h> #pragma comment(l ...
- 【个人使用.Net类库】(1)INI配置文件操作类
开发接口程序时,对于接口程序配置的IP地址.端口等都需要是可配置的,而在Win Api原生实现了INI文件的读写操作,因此只需要调用Win Api中的方法即可操作INI配置文件,关键代码就是如何调用W ...
- [IO] C# INI文件读写类与源码下载 (转载)
/// <summary> /// 类说明:INI文件读写类. /// 编 码 人:苏飞 /// 联系方式:361983679 /// 更新网站:[url]http://www.sufei ...
- C# ini配置文件操作类
/// <summary> /// INI文件操作类 /// </summary> public class IniFileHelper { /// <summary&g ...
- c#通用配置文件读写类(xml,ini,json)
.NET下编写程序的时候经常会使用到配置文件.配置文件格式通常有xml.ini.json等几种,操作不同类型配置文件需要使用不同的方法,操作较为麻烦.特别是针对同时应用不同格式配置文件的时候,很容易引 ...
- c#通用配置文件读写类与格式转换(xml,ini,json)
.NET下编写程序的时候经常会使用到配置文件.配置文件格式通常有xml.ini.json等几种,操作不同类型配置文件需要使用不同的方法,操作较为麻烦.特别是针对同时应用不同格式配置文件的时候,很容易引 ...
- 【转载】C++针对ini配置文件读写大全
http://blog.csdn.net/hgy413/article/details/6666374# ini文件(Initialization file),这种类型的文件中通常存放的是一个程序的初 ...
- vc ini配置文件读写
ini文件(即Initialization file),这种类型的文件中通常存放的是一个程序的初始化信息.ini文件由若干个节(Section)组成,每个Section由若干键(Key)组成,每个Ke ...
- C# 如何实现完整的INI文件读写类
作者: 魔法软糖 日期: 2020-02-27 引言 ************************************* .ini 文件是Initialization File的缩写,即配置文 ...
随机推荐
- 关于IE环境下按回车键会自动触发button 按钮的点击事件的解决方案
今天项目中遇到IE不兼容的问题,于是就根据问题进行修改,修改过程中发现,在输入框内用扫码枪扫描东西后会自动执行页面下面的button按钮,但是其它浏览不会出现这样的问题. 解决方案: 1.用a标签 2 ...
- ShareSDK For Unity集成
Mob ShareSDK Android - V2.7.10 iOS - V3.5.0 Mob下载:https://github.com/MobClub/New-Unity-For-ShareSDK ...
- 接口自动化--requests库封装
前言 不管是自动化大佬还是自动化小白,都知道我们用python写接口自动化测试肯定是要用requests库来封装请求类的,下面就简单介绍下requests这个库 安装 一般都是直接采用pip命令安装: ...
- PAT 乙级 1022.D进制的A+B C++/Java
1022 D进制的A+B (20 分) 题目来源 输入两个非负 10 进制整数 A 和 B (≤),输出 A+B 的 D (1)进制数. 输入格式: 输入在一行中依次给出 3 个整数 A.B 和 D. ...
- Linux学习25-Xshell设置页面最大显示行数
前言 在使用xshell查看日志的时候,有时候日志太多,往上翻的时候,前面的就找不到了. 需要设置xshell的页面显示最大行数,查看更多的日志详情. 设置显示行数 左上角-文件-属性 终端-设置最大 ...
- 20180606模拟赛T1——猫鼠游戏
题目描述: 猫和老鼠在10*10的方格中运动,例如: *...*..... ......*... ...*...*.. .......... ...*.C.... *.....*... ...*... ...
- 前端性能----TCP协议
TCP属于OSI七层模型中的传输层协议,位于网络边缘,提供端到端的可靠数据传输,其有着承上启下的作用,协议数据单元为报文段(Message Segment). TCP需要提供以下功能: 分组和复用 应 ...
- React Tutorial: Basic Concept Of React Component---babel, a translator
Getting started with react.js: basic concept of React component 1 What is React.js React, or React.j ...
- Redux的图文模型
Also these are really nice (from http://slides.com/jenyaterpil/redux-from-twitter-hype-to-production ...
- LeetCode 1110. Delete Nodes And Return Forest
原题链接在这里:https://leetcode.com/problems/delete-nodes-and-return-forest/ 题目: Given the root of a binary ...