C#读写ini文件详解

摘要:
原始地址:http://developer.51cto.com/art/200908/143715.htmC#在读写ini文件之前要了解的概念:ini是一个扩展名为“ini”的文件。事实上,它本身就是一个文本文件,可以用记事本打开。它主要存储用户做出的选择或系统的各种参数。C#读写ini文件不是普通的文本文件。它有自己的结构。它由几个部分组成。在每个带括号的标题下,有几个单独的单词
 

原文地址:http://developer.51cto.com/art/200908/143715.htm

C#读写ini文件之前要了解的概念:INI就是扩展名为"INI"的文件,其实他本身是个文本文件,可以用记事本打开,主要存放的是用户所做的选择或系统的各种参数.

C#读写ini文件其实并不是普通的文本文件.它有自己的结构.由若干段落(SECTION)组成,在每个带括号的标题下面,是若干个以单个单词开头的关键字(KEYWORD)和一个等号,等号右边就是关键字的值(VALUE).例如:

  1. [Section1]  
  2.     KeyWord1 = Value1  
  3.     KeyWord2 = Value2  
  4.     ...  
  5. [Section2]  
  6.     KeyWord3 = Value3  
  7.     KeyWord4 = Value4 

C#读写ini文件最初的想法:C#命名空间中没有直接读写INI的类,当然如果你把INT当成文本文件用System.IO类来读写算我没说.

我现在介绍的是系统处理INI的方法.

虽然C#中没有,但是在"kernel32.dll"这个文件中有Win32的API函数--WritePrivateProfileString()和GetPrivateProfileString()

C#读写ini文件实现之C#声明INI文件的写操作函数WritePrivateProfileString():

  1. [DllImport( "kernel32" )]  
  2.   private static extern long WritePrivateProfileString (
  3.  string section ,string key , string val   
  4. string filePath ) ; 

参数说明:

section:INI文件中的段落;

key:INI文件中的关键字;

val:INI文件中关键字的数值;

filePath:INI文件的完整的路径和名称。

C#读写ini文件实现之C#申明INI文件的读操作函数GetPrivateProfileString():

  1. [DllImport("kernel32")]  
  2.  private static extern int GetPrivateProfileString (
  3.  string section ,  
  4.   string key , string def , StringBuilder retVal ,  
  5.   int size , string filePath ) ; 

参数说明:

section:INI文件中的段落名称;

key:INI文件中的关键字;

def:无法读取时候时候的缺省数值;

retVal:读取数值;

size:数值的大小;

filePath:INI文件的完整路径和名称。

下面是一个C#读写ini文件的类:

  1. public class INIClass  
  2. {  
  3.  public string inipath;  
  4.  [DllImport("kernel32")]  
  5.  private static extern long WritePrivateProfileString(
  6. string section,string key,string val,string filePath);  
  7.  [DllImport("kernel32")]  
  8.  private static extern int GetPrivateProfileString(
  9. string section,string key,
  10. string def,StringBuilder retVal,
  11. int size,string filePath);  
  12.  /// ﹤summary﹥  
  13.  /// 构造方法  
  14.  /// ﹤/summary﹥  
  15.  /// ﹤param name="INIPath"﹥文件路径﹤/param﹥  
  16.  public INIClass(string INIPath)  
  17.  {  
  18.   inipath = INIPath;  
  19.  }  
  20.  /// ﹤summary﹥  
  21.  /// 写入INI文件  
  22.  /// ﹤/summary﹥  
  23.  /// ﹤param name="Section"﹥项目名称(如 [TypeName] )﹤/param﹥  
  24.  /// ﹤param name="Key"﹥键﹤/param﹥  
  25.  /// ﹤param name="Value"﹥值﹤/param﹥  
  26.  public void IniWriteValue(string Section,string Key,string Value)  
  27.  {  
  28.   WritePrivateProfileString(Section,Key,Value,this.inipath);  
  29.  }  
  30.  /// ﹤summary﹥  
  31.  /// 读出INI文件  
  32.  /// ﹤/summary﹥  
  33.  /// ﹤param name="Section"﹥项目名称(如 [TypeName] )﹤/param﹥  
  34.  /// ﹤param name="Key"﹥键﹤/param﹥  
  35.  public string IniReadValue(string Section,string Key)  
  36.  {  
  37.   StringBuilder temp = new StringBuilder(500);  
  38.   int i = GetPrivateProfileString(Section,Key,"",temp,500,this.inipath);  
  39.   return temp.ToString();  
  40.  }  
  41.  /// ﹤summary﹥  
  42.  /// 验证文件是否存在  
  43.  /// ﹤/summary﹥  
  44.  /// ﹤returns﹥布尔值﹤/returns﹥  
  45.  public bool ExistINIFile()  
  46.  {  
  47.   return File.Exists(inipath);  
  48.  }  

免责声明:文章转载自《C#读写ini文件详解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇java操作xm——添加、修改、删除、遍历java HttpURLConnection 接口文件传输文件上传下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

干货分享:ASP.NET CORE(C#)与Spring Boot MVC(JAVA)异曲同工的编程方式总结

我(梦在旅途,http://zuowj.cnblogs.com; http://www.zuowenjun.cn)最近发表的一篇文章《.NET CORE与Spring Boot编写控制台程序应有的优雅姿势》看到都上48小时阅读排行榜(当然之前发表的文章也有哦!),说明关注.NET CORE及Spring Boot的人很多,也是目前的主流方向,于是我便决定系...

C#最佳工具集合:IDE、分析、自动化工具等

C#是企业中广泛使用的编程语言,特别是那些依赖微软的程序语言。如果您使用C#构建应用程序,则最有可能使用Visual Studio,并且已经寻找了一些扩展来对您的开发进行管理。但是,这个工具列表可能会改变您编写C#代码的方式。 C#编程的最佳工具有以下几类: IDE VS扩展 编译器、编辑器和序列化 反编译和代码转换工具 构建自动化和合并工具 版本控制...

kotlin的一些特性介绍和与java C#的简单对比

前言 这是我之前在知乎上的一些回答的汇总,感觉还是博客园写这些东西方便一点,也算是理下我的一些思路,现将文章整理后,发布在园子里。 为何是kotlin: 很多人对kt没有一个正确的定位,可能大家第一反应是拿它去和scala,groovy比较. 从语法的角度而言,kotlin丰富且严谨到恰到好处的语法糖,表达能力强但不啰嗦,极少的代码冗余。 但老实讲能做到这...

C#锐利体验(转)

南京邮电学院 李建忠(cornyfield@263.net) 索引 C#锐利体验 "Hello,World!"程序 C#语言基础介绍 Microsoft.NET平台基础构造 类与对象 构造器与析构器 方法 域与属性 索引器与操...

c#实现多线程代码例子

相信大家都有用过网际快车等下载资源的经历,它里面是可以设置线程数的(近年版本默认是10,曾经默认是5)。它会将文件分成与线程数相同的部分,然后每个线程下载自己的那一部分,这样下载效率就有可能提高。相信大家都有加多线程数,提升下载效率的经历。但细心的用户会发现,在带宽一定的情况下,并不是线程越多,速度越快,而是在某一点达到峰值。在C#中用多线程并不难实现。它...

解决关闭窗口,C#报错"在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke"

情况:在C#开发的过程中多线程委托是经常用的,今天在测试以前写的软件的时候发现有个问题,报 在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。 这样的错误。 解决方法:加上 if (this.IsHandleCreated) 1、首先分析问题,句柄:是对象的引用名,存于栈区(可以理解为对象的指针),对象是存于堆区,通过操控栈区...