• [转]用C#读写ini配置文件


     

    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);
     }
    }
    原文地址:http://www.cnblogs.com/zzyyll2/archive/2007/11/06/950584.html
  • 相关阅读:
    Android播放器实现视频窗口实时放大缩小功能
    Spydroid还是大牛直播内置RTSP服务SDK
    安卓端/iOS端如何播放4K分辨率的RTMP/RTSP流
    mingw64+msys2下使用cmake问题
    h264, h265 和 libvpx 比较(h264/avc, hevc 和vp9比较)
    直播协议的选择:RTMP vs. HLS
    如何推送和播放RTMP H265流 (RTMP HEVC)
    如何支持RTSP播放H.265(HEVC)流
    如何实现RTSP推送H.264、RTSP推送H.265(hevc)
    rtmp/rtsp/hls公网测试地址
  • 原文地址:https://www.cnblogs.com/huige1004/p/1307338.html
Copyright © 2020-2023  润新知