C# 读写ini配置文件demo
INI就是扩展名为"INI"的文件,其实他本身是个文本文件,可以用记事本打工,主要存放的是用户所做的选择或系统的各种参数.
INI文件其实并不是普通的文本文件.它有自己的结构.由若干段落(SECTION)组成,在每个带括号的标题下面,是若干个以单个单词开头的关键字(KEYWORD)和一个等号,等号右边就是关键字的值(VALUE).例如:
[Section1]
KeyWord1 = Value1
KeyWord2 = Value2
...
[Section2]
KeyWord3 = Value3
KeyWord4 = Value4
C#命名空间中没有直接读写INI的类,当然如果你把INT当成文本文件用System.IO类来读写算我没说.
我现在介绍的是系统处理INI的方法.
虽然C#中没有,但是在"kernel32.dll"这个文件中有Win32的API函数--WritePrivateProfileString()和GetPrivateProfileString()
C#声明INI文件的写操作函数WritePrivateProfileString():
[DllImport( " kernel32 " )]
private static extern long WritePrivateProfileString ( string section , string key , string val
, string filePath ) ;
参数说明:section:INI文件中的段落;key:INI文件中的关键字;val:INI文件中关键字的数值;filePath:INI文件的完整的路径和名称。
C#申明INI文件的读操作函数GetPrivateProfileString():
[DllImport( " kernel32 " )]
private static extern int GetPrivateProfileString ( string section ,
string key , string def , StringBuilder retVal ,
int size , string filePath ) ;
参数说明:section:INI文件中的段落名称;key:INI文件中的关键字;def:无法读取时候时候的缺省数值;retVal:读取数值;size:数值的大小;filePath:INI文件的完整路径和名称。
下面是一个读写INI文件的类:
public class INIClass
{
public string inipath;
[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);
/// <summary>
/// 构造方法
/// </summary>
/// <param name="INIPath"> 文件路径 </param>
public INIClass( string INIPath)
{
inipath = INIPath;
}
/// <summary>
/// 写入INI文件
/// </summary>
/// <param name="Section"> 项目名称(如 [TypeName] ) </param>
/// <param name="Key"> 键 </param>
/// <param name="Value"> 值 </param>
public void IniWriteValue( string Section, string Key, string Value)
{
WritePrivateProfileString(Section,Key,Value, this .inipath);
}
/// <summary>
/// 读出INI文件
/// </summary>
/// <param name="Section"> 项目名称(如 [TypeName] ) </param>
/// <param name="Key"> 键 </param>
public string IniReadValue( string Section, string Key)
{
StringBuilder temp = new StringBuilder( 500 );
int i = GetPrivateProfileString(Section,Key, "" ,temp, 500 , this .inipath);
return temp.ToString();
}
/// <summary>
/// 验证文件是否存在
/// </summary>
/// <returns> 布尔值 </returns>
public bool ExistINIFile()
{
return File.Exists(inipath);
}
}
C# 读写ini配置文件
1、新建类,引入命名空间 using System.Runtime.InteropServices;
2、声明API函数:
[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);
3、实现:写
/// <summary>
/// 写入INI文件
/// </summary>
/// <param name="field">项目名称(如 [TypeName] )</param>
/// <param name="Key">键</param>
/// <param name="Value">值</param>
public void GetValueOfKey(string field, string Key, string Value)
{
WritePrivateProfileString(field, Key, Value, iniFilePath);
}
4、实现:读
/// <summary>
/// 读出INI文件
/// </summary>
/// <param name="field">项目名称(如 [TypeName] )</param>
/// <param name="Key">键</param>
public string IniReadValue(string field, string Key)
{
StringBuilder temp = new StringBuilder(500);
int i = GetPrivateProfileString(field, Key, "", temp, 500, this.inipath);
return temp.ToString();
}
相关文章
- C#-Web服务器
- 《C#本质论(第4版)》
- c# 中内部类的简单介绍 C#内部类
- c#代码 天气接口 一分钟搞懂你的博客为什么没人看 看完python这段爬虫代码,java流泪了c#沉默了 图片二进制转换与存入数据库相关 C#7.0--引用返回值和引用局部变量 JS直接调用C#后台方法(ajax调用) Linq To Json SqlServer 递归查询
- C#订阅与发布标准实现 visual studio code .net 开发 设计模式之☞策略模式 C#字符串转二进制、二进制转字符串 c# 接口的协变和逆变 c# 使用迭代器来创建可枚举类型 博客园首页新随笔联系订阅管理 随笔 - 117 文章 - 0 评论 - 57 c# 创建,加载,修改XML文档
- c#封装DBHelper类 c# 图片加水印 (摘)C#生成随机数的三种方法 使用LINQ、Lambda 表达式 、委托快速比较两个集合,找出需要新增、修改、删除的对象 c# 制作正方形图片 JavaScript 事件循环及异步原理(完全指北)
- XML序列化 判断是否是手机 字符操作普通帮助类 验证数据帮助类 IO帮助类 c# Lambda操作类封装 C# -- 使用反射(Reflect)获取dll文件中的类型并调用方法 C# -- 文件的压缩与解压(GZipStream)
- C# DateTime的11种构造函数 [Abp 源码分析]十五、自动审计记录 .Net 登陆的时候添加验证码 使用Topshelf开发Windows服务、记录日志 日常杂记——C#验证码 c#_生成图片式验证码 C# 利用SharpZipLib生成压缩包 Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库
- EF+LINQ事物处理 C# 使用NLog记录日志入门操作 ASP.NET MVC多语言 仿微软网站效果(转) 详解C#特性和反射(一) c# API接受图片文件以Base64格式上传图片 .NET读取json数据并绑定到对象
- 利用反射快速给Model实体赋值 使用 Task 简化异步编程 Guid ToString 格式知多少?(GUID 格式) Parallel Programming-实现并行操作的流水线(生产者、消费者) c# 无损高质量压缩图片代码 8种主要排序算法的C#实现 (一) 8种主要排序算法的C#实现 (二)
- 常量,字段,构造方法 调试 ms 源代码 一个C#二维码图片识别的Demo 近期ASP.NET问题汇总及对应的解决办法 c# chart控件柱状图,改变柱子宽度 使用C#创建Windows服务 C#服务端判断客户端socket是否已断开的方法 线程 线程池 Task .NET 单元测试的利剑——模拟框架Moq
- c# 把一个匿名对象赋值给一个Object类型的变量后,怎么取这个变量? c# dynamic动态类型和匿名类 详解C# 匿名对象(匿名类型)、var、动态类型 dynamic 深入浅析C#中的var和dynamic
- ASP.NET Boilerplate 学习 AspNet Core2 浏览器缓存使用 c#基础,单线程,跨线程访问和线程带参数 wpf 禁用启用webbroswer右键菜单 EF Core 2.0使用MsSql/MySql实现DB First和Code First ASP.NET Core部署到Windows IIS QRCode.js:使用 JavaScript 生成
- 【卷土重来之C#学习笔记】(二)c#编程概述
- Word控件Spire.Doc 【Table】教程(16):C#/VB.NET:在 Word 表格中插入或提取图像
- C#应用程序配置文件.config介绍
- 【C#】面试1
- 《C#并发编程经典实例》—— 超时
- C#中PostMessage和SendMessage的参数传递实例
- C# XML基本操作
- c# ArrayList 类
- c# 定制处理未处理异常
- C# ODP.Net oracle数据库操作 支持不安装客户端
- C# checked和unchecked详解
- C# 读取,删除,增加,修改app.config配置文件信息
- c# 屏蔽快捷键
- C# 解析带前缀的Xml节点内容
- 【C#】读取Excel中嵌套的Json对象,Json带斜杠的问题(其三)
- 【C#】Config配置文件的读写,及无法写入/保存配置文件的问题
- C#数据库连接配置文件存放至App.Config