• 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.  }  
  • 相关阅读:
    NanUI for Winform发布,让Winform界面设计拥有无限可能
    使用Nginx反向代理 让IIS和Tomcat等多个站点一起飞
    jQuery功能强大的图片查看器插件
    Entity Framework 5.0 Code First全面学习
    封装EF code first用存储过程的分页方法
    NET中使用Redis (二)
    Redis学习笔记~Redis主从服务器,读写分离
    ID3算法
    定性归纳(1)
    js加密
  • 原文地址:https://www.cnblogs.com/swarb/p/9924459.html
Copyright © 2020-2023  润新知