C# ini文件操作【源码下载】

来源:http://www.cnblogs.com/polk6/p/6052908.html

介绍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文件常用于存储各类应用的配置信息,而内部的文件结构主要包括三个概念:sectionkeyvalue

其中section为各独立的区域块,名称可以为英文、中文。

 

2. GetPrivateProfileString()函数 :读取操作

C#可以通过调用【kernel32.dll】文件中的 GetPrivateProfileString()函数对ini文件进行读取操作。

官方APIhttps://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) 获取ini文件所有的section名称

3) 获取指定section下的所有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文件进行写入操作。

官方APIhttps://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

CSDNhttp://download.csdn.net/detail/polk6/9684148

 

时间: 2024-09-26 09:39:56

C# ini文件操作【源码下载】的相关文章

SpringMVC+BUI实现文件上传(附详解,源码下载)

版权声明:本文为博主原创文章,转载注明出处http://blog.csdn.net/u013142781 目录(?)[+] 中午有限时间写这博文,前言就不必多说了,直奔主题吧. BUI是一个前端框架,关于BUI的介绍请看博主的文章那些年用过的一些前端框架. 下面我们开始实例的讲解! 一.效果演示: 上传成功后,会发现本地相应的sava目录下多了刚刚上传的图片(因为只是一个例子,就保存在本地目录了). 二.实例讲解 本实例使用的环境,eclipse + maven.  使用的技术:SpringMV

Dropzone.js实现文件拖拽上传功能(附源码下载)_javascript技巧

dropzone.js是一个开源的JavaScript库,提供 AJAX 异步文件上传功能,支持拖拽文件.支持最大文件大小.支持设置文件类型.支持预览上传结果,不依赖jQuery库. 效果演示      源码下载 使用Dropzone 我们可以建立一个正式的上传form表单,并且给表单一个.dropzone的class. <form id="mydropzone" action="/upload.php" class="dropzone"&

Android源码下载及开发环境的搭建

1.前言         前一博文给自己列了一下Android的学习计划,是时候一个个的完成了.如计划列的,我要写的第一篇是<Android源码 的下载及开发环境的搭建>,致于如何去下载源码,其实网上已经一大堆的帖子了,一搜就有.但在这里,我想说,一个源码的下载,不是简单的把源码下载下来之 样就OK了,就可以开始你的源码学习之旅.要想更好的学习源码和进行开发,一个适合自己的开发环境还是必不可少的,这里我会列出来我给自己准备的开发环境 的做法,不能说明是最优的,但至少我感觉对我来说还是挺方便的.

Zend Framework入门之环境配置及第一个Hello World示例(附demo源码下载)_php实例

本文实例讲述了Zend Framework入门之环境配置及第一个Hello World程序.分享给大家供大家参考,具体如下: 第一步:确认你的PHP环境: 1.请PHPer确认你的PHP版本是否在5.2.0以上..如果不是的话..请更新到5.2.0,否则.Zend Framework 好像用不了..我自己有试过. 遇到过这样的问题..所以请你们自己测试一下..PHP源码最新版下载地址为:http://www.php.net/downloads.php. 2.你的PHP环境配置好了之后,请打开ph

论坛源码下载

问题描述 各位老大:哪里有论坛带源码的下载啊.net(c#)2.0+sql2000的,谢谢!! 解决方案 解决方案二:你可以下载XproerBBS,已经开源最新源码下载地址:http://www.xproer.com/download/FoxBBS_OpenSource.rar也可以在QQ群共享上在下载.QQ群号:6259764由于网站没有备案,现在暂时关闭,所以推荐到QQ群上下载在QQ群中有两个文件(1)FoxBBS论坛源代码(2)images论坛图片文件.使用时将它他们解压到同一个目录中,推

jqGrid表格应用之新增与删除数据附源码下载_jquery

jqGrid可以结合fancybox等插件完成超酷的弹出层效果,通过与php后台交互,可以轻松完成数据的添加与详情查看,而这个过程完全是一个ajax异步通信过程,是一个非常友好的富客户端应用. 下面给大家展示了效果图,喜欢的朋友可以直接下载源码哦. 效果展示    源码下载 在上一篇文章中,我们提到过jqGrid自身有强大的单元格操作模块,但是这些模块操作起来不太适合用户的习惯,在本文中,我们使用fancybox,以及表单插件来完成jqGrid数据的添加以及删除操作. XHTML 首先需要在he

基于spring+hibernate+JQuery开发之电子相册(附源码下载)_java

项目结构: 开发之电子相册(附源码下载)_java-spring hibernate源码"> 项目首页: 注册页面: 上传图片: 效果图一: 效果图二: 效果图三: ============================================================= 下面是代码部分 ============================================================= 需要用到的数据库SQL: 复制代码 代码如下: drop dat

不依赖Flash和任何JS库实现文本复制与剪切附源码下载_javascript技巧

效果图如下: 我们在网页上放置一个复制按钮,主要用来方便用户复制链接之类的复杂文本,以往的做法是,通过JS依靠Flash,甚至借助jQuery庞大的js库来实现文本复制到剪贴板的.今天我要给大家介绍的是一款极现代的,不需要flash,不依赖任何其他js库的非常小的插件,它叫clipboard.js. 查看演示 下载源码 HTML 首先加载本地clipboard.js文件. 复制代码 代码如下: <script src="clipboard.min.js"></scri

基于jQuery实现select下拉选择可输入附源码下载_jquery

我们知道,一般select下拉框是只能选择的,不能用来输入内容的.而有时我们会遇到下拉框中没有要选择的信息项或者下拉选项特别多时,我们可以让select变成text,允许用户输入想要的内容,同时还可以在输入的时候将包含关键字的项也列出来,供快速选择. 查看演示效果            源码下载 本文将用实例和大家分享一款基于jQuery的下拉框插件,它允许用户输入内容,同时下拉选项中会及时匹配相关选项,支持键盘操作,还支持html选项内容,当然还能让下拉的过程带有动画效果.我们来看下如何使用.