C# ini文件操作【源码下载】
介绍C#如何对ini文件进行读写操作,C#可以通过调用【kernel32.dll】文件中的 WritePrivateProfileString()和GetPrivateProfileString()函数分别对ini文件进行读和写操作。包括:读取key的值、保存key的值、读取所有section、读取所有key、移除section、移除key等操作。
目录
1. ini文件介绍
2. 读取操作:包括读取key的值、读取所有section、读取所有key等操作。
3. 写入操作: 包括保存key的值、移除section、移除key等操作。
4. 源码下载:展示运行图及源码下载
1. ini文件介绍
ini文件常用于存储各类应用的配置信息,而内部的文件结构主要包括三个概念:section、key和value。
其中section为各独立的区域块,名称可以为英文、中文。
2. GetPrivateProfileString()函数 :读取操作
C#可以通过调用【kernel32.dll】文件中的 GetPrivateProfileString()函数对ini文件进行读取操作。
官方API:https://msdn.microsoft.com/zh-cn/library/ms724353.aspx
函数签名:
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string sectionName, string key, string defaultValue, byte[] returnBuffer, int size, string filePath);
成员:
sectionName {string | null}:要读区的区域名。若传入null值,第4个参数returnBuffer将会获得所有的section name。
key {string | null}:key的名称。若传入null值,第4个参数returnBuffer将会获得所有的指定sectionName下的所有key name。
defaultValue {string}:key没找到时的返回值。
returnBuffer {byte[]}:key所对应的值。
filePath {string}:ini文件路径。
支持的操作:
1) 获取指定key的值。
2.1 获取指定key的值
/// <summary>
/// 根据Key读取Value
/// </summary>
/// <param name="sectionName">section名称</param>
/// <param name="key">key的名称</param>
/// <param name="filePath">文件路径</param>
public static string GetValue(string sectionName, string key, string filePath)
{
byte[] buffer = new byte[2048];
int length = GetPrivateProfileString(sectionName, key, "发生错误", buffer,999, filePath);
string rs = System.Text.UTF8Encoding.Default.GetString(buffer, 0, length);
return rs;
}
2.2 获取ini文件所有的section名称
注意:中文名称的section要进行转码。
/// <summary>
/// 获取ini文件内所有的section名称
/// </summary>
/// <param name="filePath">文件路径</param>
/// <returns>返回一个包含section名称的集合</returns>
public static List<string> GetSectionNames(string filePath)
{
byte[] buffer = new byte[2048];
int length = GetPrivateProfileString(null, "", "", buffer, 999, filePath);
String[] rs = System.Text.UTF8Encoding.Default.GetString(buffer, 0, length).Split(new string[] { "\0" },StringSplitOptions.RemoveEmptyEntries);
return rs.ToList();
}
2.3 获取指定section下的所有key名称
同样要对中问名称的key进行转码。
/// <summary>
/// 获取指定section内的所有key
/// </summary>
/// <param name="sectionName">section名称</param>
/// <param name="filePath">文件路径</param>
/// <returns>返回一个包含key名称的集合</returns>
public static List<string> GetKeys(string sectionName, string filePath)
{
byte[] buffer = new byte[2048];
int length = GetPrivateProfileString(sectionName,null,"", buffer, 999, filePath);
String[] rs = System.Text.UTF8Encoding.Default.GetString(buffer, 0, length).Split(new string[] { "\0" }, StringSplitOptions.RemoveEmptyEntries);
return rs.ToList();
}
3. WritePrivateProfileString()函数:写入操作
C#可以通过调用【kernel32.dll】文件中的 WritePrivateProfileString()函数对ini文件进行写入操作。
官方API:https://msdn.microsoft.com/zh-cn/library/ms725501.aspx
函数签名:
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string sectionName, string key, string value, string filePath);
成员:
sectionName {string}:要写入的区域名。
key {string | null}:key的名称。若传入null值,将移除指定的section。
value {string | null}:设置key所对应的值。若传入null值,将移除指定的key。
filePath {string}:ini文件路径。
支持的操作:
1) 创建/设置key的值。
2) 移除指定的section。
3) 移除指定的key。
3.1 创建/设置key的值
注意:若此key不存在将会创建,否则就为修改此key的值。
/// <summary>
/// 保存内容到ini文件
/// <para>若存在相同的key,就覆盖,否则就增加</para>
/// </summary>
/// <param name="sectionName">section名称</param>
/// <param name="key">key的名称</param>
/// <param name="value">存储的值</param>
/// <param name="filePath">文件路径</param>
public static bool SetValue(string sectionName, string key, string value, string filePath)
{
int rs = (int)WritePrivateProfileString(sectionName, key, value, filePath);
return rs > 0;
}
3.2 移除指定的section
说明:key参数传入null就为移除指定的section。
/// <summary>
/// 移除指定的section
/// </summary>
/// <param name="sectionName">section名称</param>
/// <param name="filePath">文件路径</param>
/// <returns></returns>
public static bool RemoveSection(string sectionName, string filePath)
{
int rs = (int)WritePrivateProfileString(sectionName, null, "", filePath);
return rs > 0;
}
3.3 移除指定的key
说明:value参数传入null就为移除指定的key。
/// <summary>
/// 移除指定的key
/// </summary>
/// <param name="sectionName">section名称</param>
/// <param name="filePath">文件路径</param>
/// <returns></returns>
public static bool Removekey(string sectionName, string key, string filePath)
{
int rs = (int)WritePrivateProfileString(sectionName, key, null, filePath);
return rs > 0;
}
4. 源码下载
4.1 运行图
4.2 下载地址
百度网盘:http://pan.baidu.com/s/1dEQ3QuP
CSDN:http://download.csdn.net/detail/polk6/9684148
C# ini文件操作【源码下载】的更多相关文章
- Java文件操作源码大全
Java文件操作源码大全 1.创建文件夹 52.创建文件 53.删除文件 54.删除文件夹 65.删除一个文件下夹所有的文件夹 76.清空文件夹 87.读取文件 88.写入文件 99.写入随机文件 9 ...
- 【转】可在广域网部署运行的即时通讯系统 -- GGTalk总览(附源码下载)
原文地址:http://www.cnblogs.com/justnow/p/3382160.html (最新版本:V6.0,2017.12.11 .即将推出Xamarin移动端版本,包括 Androi ...
- C#实现文件批量重命名源码下载
本文要实现的功能是 文件批量重命名,当选择一个文件夹时,通过操作可以把文件夹下面所有文件进行重命名.建立了HoverTreeBatch项目. 然后 定义文件夹信息: DirectoryInfo _Th ...
- C# 条形码操作【源码下载】
本篇介绍通过C#生成和读取一维码.二维码的操作. 目录 1. 介绍:介绍条形码.条形码的分类以及ZXing.Net类库. 2. 一维码操作:包含对一维码的生成.读取操作. 3. 二维码操作:包含对二维 ...
- Asp.Net Web Api 2 实现多文件打包并下载文件示例源码_转
一篇关于Asp.Net Web Api下载文件的文章,之前我也写过类似的文章,请见:<ASP.NET(C#) Web Api通过文件流下载文件到本地实例>本文以这篇文章的基础,提供了Byt ...
- SpringMVC+BUI实现文件上传(附详解,源码下载)
中午有限时间写这博文,前言就不必多说了,直奔主题吧. BUI是一个前端框架,关于BUI的介绍请看博主的文章那些年用过的一些前端框架. 下面我们开始实例的讲解! 一.效果演示: 上传成功后,会发现本地相 ...
- Winforn中DevExpress的TreeList中显示某路径下的所有目录和文件(附源码下载)
场景 Winform中DevExpress的TreeList的入门使用教程(附源码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
- GZFramwork快速开发框架演练之会员系统(一)框架源码下载
GZFramwork框架开发环境为.NET 4.0 (必须) VS2013+SQL2005+DevExpress v13.2.8+FastReport (推荐) 数据库建模工具PowerDesi ...
- C# Excel导入、导出【源码下载】
本篇主要介绍C#的Excel导入.导出. 目录 1. 介绍:描述第三方类库NPOI以及Excel结构 2. Excel导入:介绍C#如何调用NPOI进行Excel导入,包含:流程图.NOPI以及C#代 ...
随机推荐
- 视频 - 在 VirtualBox 中部署 OpenStack
大家新年好,CloudMan 今天给大家带来一件新年礼物. 一直以来大家都反馈 OpenStack 学习有两大障碍:1. 实验环境难搭2. 体系复杂,难道大今天我就先帮大家解决环境问题.前两天我抽空在 ...
- Linux碎碎念
在学习Linux过程中,有许多有用的小技巧.如果放在纸质的笔记本上,平时查阅会相当不方便.现在以一种“碎碎念”的方式,汇集整理在此,目前还不是很多,但随着学习.工作的深入,后续会陆陆续续添加更多的小技 ...
- Solr 排除查询
前言 solr排除查询也就是我们在数据库和程序中经常处理的不等于,solr的语法是在定语前加[-].. StringBuilder sbHtml=new StringBuilder(); shBhtm ...
- AlloyTouch实战--60行代码搞定QQ看点资料卡
原文链接:https://github.com/AlloyTeam/AlloyTouch/wiki/kandian 先验货 访问DEMO你也可以点击这里 源代码可以点击这里 如你体验所见,流程的滚动的 ...
- 让你从零开始学会写爬虫的5个教程(Python)
写爬虫总是非常吸引IT学习者,毕竟光听起来就很酷炫极客,我也知道很多人学完基础知识之后,第一个项目开发就是自己写一个爬虫玩玩. 其实懂了之后,写个爬虫脚本是很简单的,但是对于新手来说却并不是那么容易. ...
- git 命令总结
1 删除分支 git push origin :branch name(Task_******) //删除远程分支 git branch -D branch name(Task_******) ...
- BZOJ 4199: [Noi2015]品酒大会 [后缀数组 带权并查集]
4199: [Noi2015]品酒大会 UOJ:http://uoj.ac/problem/131 一年一度的“幻影阁夏日品酒大会”隆重开幕了.大会包含品尝和趣味挑战两个环节,分别向优胜者颁发“首席品 ...
- 一步步学习javascript基础篇(7):BOM和DOM
一.什么是BOM.什么是DOM BOM即浏览器对象模型,主要用了访问一些和网页无关的浏览器功能.如:window.location.navigator.screen.history等对象. DOM即文 ...
- android内部培训视频_第五节(1)_OA实战之登录界面
第五节(1):OA实战之登录界面 一.登录界面布局 1.背景图片 2.文本框 3.checkbox 4.按钮 暂未实现点击切换图片效果 <RelativeLayout xmlns:androi ...
- ABP框架 - 启动配置
文档目录 本节内容: 配置ABP 替换内置服务 配置模块 为一个模块创建配置 ABP在启动时,提供基础框架和模型来配置和模块化. 置ABP 在预初始化事件中进行配置,示例: kid1412注:XmlL ...