c#读取ini文件操作类

来源:互联网 发布:时时彩开奖网站源码 编辑:程序博客网 时间:2024/04/30 01:19
using System;using System.Runtime.InteropServices;using System.Collections.Generic; namespace Common{/// <summary>/// ini文件操作类/// </summary>public class CIni{#region 段信息的获取//读取一个ini 文件中的所有段[DllImport("kernel32", EntryPoint = "GetPrivateProfileSectionNamesW", CharSet= CharSet.Unicode )]        private extern static int getSectionNames(        [MarshalAs(UnmanagedType.LPWStr )] string szBuffer, int nlen, string filename);//读取段里的所有数据[DllImport("kernel32",EntryPoint="GetPrivateProfileSectionW", CharSet = CharSet.Unicode)]        private extern static int getSectionValues(string Section,        [MarshalAs(UnmanagedType.LPWStr)] string szBuffer, int nlen, string filename);#endregion#region 键值的获取和设置//读取键的整形值[DllImport("kernel32",EntryPoint="GetPrivateProfileIntW" , CharSet = CharSet.Unicode)]private static extern int getKeyIntValue(string Section,string Key,int nDefault,string FileName);//读取字符串键值[DllImport("kernel32",EntryPoint="GetPrivateProfileStringW" , CharSet = CharSet.Unicode)]private extern static int getKeyValue(string section,string key,int lpDefault,        [MarshalAs(UnmanagedType.LPWStr)] string szValue, int nlen, string filename);//////写字符串键值[DllImport("kernel32",EntryPoint="WritePrivateProfileStringW" , CharSet = CharSet.Unicode)]private static extern bool setKeyValue(string Section,string key,string szValue,string FileName);//写段值[DllImport("kernel32",EntryPoint ="WritePrivateProfileSectionW" , CharSet = CharSet.Unicode)]private static extern bool setSectionValue(string section,string szvalue,string filename);#endregionprivate static readonly char []sept={'\0'};//分隔字符private string m_Path=null;//ini文件路径/// <summary>/// ini文件路径/// </summary>public string Path{set {m_Path=value;}get {return m_Path;}}public CIni(){}public CIni(string szPath){m_Path=szPath;}/// <summary>/// 读取所有段名/// </summary>public string []SectionNames{get{string buffer = new string( '\0' ,32768);int nlen = getSectionNames(buffer,32768-1,m_Path)-1;if (nlen >0 ){return buffer.Substring(0,nlen).Split(sept);}return null;}}/// <summary>/// 读取段里的数据到一个字符串数组/// </summary>        /// <param name="section">段名</param>        /// <param name="bufferSize">读取的数据大小(字节)</param>/// <returns>成功则不为null</returns>        public string[] SectionValues(string section,int bufferSize)        {            string buffer = new string( '\0' , bufferSize);            int nlen = getSectionValues(section, buffer, bufferSize, m_Path) - 1;            if (nlen > 0)            {                return buffer.Substring(0, nlen).Split(sept);            }            return null;        }        public string[] SectionValues(string section)        {            return SectionValues(section, 32768);        }/// <summary>        /// 从一个段中读取其 键-值 数据/// </summary>/// <param name="section">段名</param>/// <param name="bufferSize">读取的数据大小(字节)</param>/// <returns>成功则不为null</returns>        public Dictionary<string, string> SectionValuesEx(string section, int bufferSize){            string[] sztmp = SectionValues(section, bufferSize);if (sztmp !=null){int ArrayLen=sztmp.Length;if ( ArrayLen >0){                    Dictionary<string, string> dtRet = new Dictionary<string, string>();for (int i=0;i <ArrayLen;i++){int pos1=sztmp[i].IndexOf('=');if (pos1 >1){int nlen=sztmp[i].Length;                            //取键名,键值pos1++;if (pos1<nlen)                             dtRet.Add(sztmp[i].Substring(0, pos1-1), sztmp[i].Substring(pos1, nlen - pos1));}}                    return dtRet;}}return null;}        public Dictionary<string, string> SectionValuesEx(string section)        {            return SectionValuesEx(section, 32768);        }/// <summary>/// 写一个段的数据/// </summary>/// <param name="section"></param>/// <param name="szValue">段的数据(如果为null则删除这个段)</param>/// <returns>成功则为true</returns>public bool setSectionValue(string section,string szValue){return setSectionValue(section,szValue,m_Path);}/// <summary>/// 读整形键值/// </summary>/// <param name="section"></param>/// <param name="key"></param>/// <returns>成功则不为-1</returns>public int getKeyIntValue(string section,string key){return getKeyIntValue(section,key,-1,m_Path);}/// <summary>/// 写整形键值/// </summary>/// <param name="section"></param>/// <param name="key"></param>/// <param name="dwValue"></param>/// <returns>成功则为true</returns>public bool setKeyIntValue(string section,string key,int dwValue){return setKeyValue(section,key,dwValue.ToString(),m_Path);}/// <summary>/// 读取键值/// </summary>/// <param name="section"></param>/// <param name="key"></param>/// <returns>成功则不为null</returns>public string getKeyValue(string section,string key){string szBuffer=new string ('0' ,256);int nlen=getKeyValue(section,key,0, szBuffer,256,m_Path);return szBuffer.Substring(0,nlen-1);}    /// <summary>/// 写字符串键值/// </summary>/// <param name="Section"></param>/// <param name="key"></param>/// <param name="szValue"></param>/// <returns>成功则为true</returns>public bool setKeyValue(string Section ,string key,string szValue){return setKeyValue(Section,key,szValue,m_Path);}}//end class CIni}

原创粉丝点击