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
函数签名:
|
1
2
|
[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的值
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
/// <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要进行转码。
|
1
2
3
4
5
6
7
8
9
10
11
12
|
/// <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进行转码。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
/// <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
函数签名:
|
1
2
|
[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的值。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
/// <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。
|
1
2
3
4
5
6
7
8
9
10
11
|
/// <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。
|
1
2
3
4
5
6
7
8
9
10
11
|
/// <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
==================================系列文章==========================================
本篇文章:3.4 C# ini文件操作【源码下载】
1. C#相关文章
1.1 C# 基础(一) 访问修饰符、ref与out、标志枚举等等
1.2 C# 基础(二) 类与接口
1.3 C# DateTime日期格式化
2. C#问题区
2.2 未在本地计算机上注册"OraOLEDB.Oracle"提供程序
2.3 C# 发送邮件 附件名称为空
3. 源码示例
3.1 WinForm 天猫2013双11自动抢红包【源码下载】
3.3 C# 条形码操作【源码下载】
3.4 C# ini文件操作【源码下载】
C# ini的更多相关文章
- C# ini文件操作【源码下载】
介绍C#如何对ini文件进行读写操作,C#可以通过调用[kernel32.dll]文件中的 WritePrivateProfileString()和GetPrivateProfileString()函 ...
- Win.ini和注册表的读取写入
最近在做打包的工作,应用程序的配置信息可以放在注册表文件中,但是在以前的16位操作系统下,配置信息放在Win.ini文件中.下面介绍一下Win.ini文件的读写方法和注册表的编程. 先介绍下Win.i ...
- myeclipse 无法启动 java.lang.IllegalStateException: Unable to acquire application service. Ensure that the org.eclipse.core.runtime bundle is resolved and started (see config.ini).
把myeclipse10 按照目录完整拷贝到了另外一台电脑, 另外的目录 原安装目录 D\:\soft\i\myeclipse10 新安装目录 E\:\soft\myeclipse10 双击启动失败, ...
- .NET Core采用的全新配置系统[6]: 深入了解三种针对文件(JSON、XML与INI)的配置源
物理文件是我们最常用到的原始配置的载体,最佳的配置文件格式主要由三种,它们分别是JSON.XML和INI,对应的配置源类型分别是JsonConfigurationSource.XmlConfigura ...
- 纯C#的ini格式配置文件读写
虽然C#里都是添加app.config 并且访问也很方便 ,有时候还是不习惯用他.那么我们来做个仿C++下的那种ini配置文件读写吧,其他人写的都是调用非托管kernel32.dll.我也用过 但是感 ...
- C#读取ini文件的方法
最近项目用到ini文件,读取ini文件,方法如下: using System; using System.Collections.Generic; using System.Linq; using S ...
- IIS不能下载ini文件
1.打开IIS. 2.选择站点或者存放*.ini文件的目录,右键菜单中选择属性. 3.选择“HTTP头”选项卡. 4.点击“MINE类型”. 5.点击“新建”. 6.这是跳出一个对话框,在“扩展名”一 ...
- 1201MySQL配置文件mysql.ini参数详解
转自http://www.cnblogs.com/feichexia/archive/2012/11/27/mysqlconf.html my.ini(Linux系统下是my.cnf),当mysql服 ...
- PHP7中php.ini、php-fpm和www.conf的配置
引自:https://typecodes.com/web/php7configure.html 1 配置php.ini php.ini是php运行核心配置文件: ######避免PHP信息暴露在htt ...
- php.ini 中文注释
这个文件控制了PHP许多方面的观点.为了让PHP读取这个文件,它必须被命名为 ; ´php.ini´.PHP 将在这些地方依次查找该文件:当前工作目录:环境变量PHPRC ; 指明的路径:编译时指定的 ...
随机推荐
- 无意中发现Markdown,最终解放了我
文件夹 概述 换行 删除线 链接自己主动识别 表格 代码块高亮 定义列表 脚注 自己主动生成文件夹 參考资料 正文 概述 大部分情况下,Markdown的基本的语法已够我们使用,比方随性记录点东西.非 ...
- HBase -ROOT-和.META.表结构(region定位原理) 分类: B7_HBASE 2015-03-13 20:52 90人阅读 评论(0) 收藏
在HBase中,大部分的操作都是在RegionServer完成的,Client端想要插入,删除,查询数据都需要先找到相应的RegionServer.什么叫相应的RegionServer?就是管理你要操 ...
- NSCache使用常见错误
NSCache用来存储缓存数据的时候.和NSDictionary功能类似, 可是NSCache有一个特别的问题: 一旦接收到内存警告之后,假设使用[NSCache removeAllObjects]处 ...
- ASP.NET MVC中实现多个button提交的几种方法
有时候会遇到这样的情况:在一个表单上须要多个button来完毕不同的功能,比方一个简单的审批功能. 假设是用webform那不须要讨论,但asp.net mvc中一个表单仅仅能提交到一个Action处 ...
- Android Wear之android穿戴式设备应用开发平台
Android Wear于2014年03月19日公布,并有Moto 360和LG watch两款产品. 眼下源代码还没有开放.可是开发人员能够下载它的Image及相应的开发SDK,这样开发人员通过模拟 ...
- WP8.1开发:简单的天气预报应用
今天小梦给大家分享一个简单的天气预报应用源码:调用的是百度API.整个应用都没有什么难点.只是一个简单的网络请求和json数据处理.在WP8.1有小娜的情况下,天气预报应用还有意义吗?我认为还是有点意 ...
- android Navigator的高度计算和推断是否显示
进入互联网行业几天了, 从手机行业转到互联网行业也在慢慢的适应: IDE工具的使用(之前一直在Ubuntu 命令行进行开发). 版本号管理工具,代码架构等等这些都须要又一次适应. 好在本人另一些底子, ...
- MySQL参数文件位置
对于linux/unix: mysql --help|grep my.cnf /etc/my.cnf, /etc/mysql/my.cnf, /usr/local/etc/my.cnf, ~/.m ...
- android webview中的音乐的暂停与播放
前段时间有这样一个需求,webview显示一个带音乐的网页,在播放音乐的时候进入第三方软件暂停播放,返回时继续播放.后来参考了两篇文章解决了这个问题. AudioManager audioManage ...
- C++网络编程方面的开源项目
Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力. ...