C#操作ini文件

来源:互联网 发布:nat网络 编辑:程序博客网 时间:2024/04/28 02:17
   public class IniOperation    {        private static string iniFilePath;  //ini文件的路径        const int MAXENTRY = 500000;               //最大缓冲值500*1000字节        public IniOperation(string strIniFileName)        {            if (strIniFileName.Substring(2, 1) == "\\")//如果输入的为路径+Iin文件名,使用正则表达式会比较好一点            {                 iniFilePath = strIniFileName;             }            else if (strIniFileName.Contains(".ini"))            {                string serciecName = AppconfigClass.GetValue("ServiceName");                iniFilePath = string.IsNullOrEmpty(serciecName) ? strIniFileName : CommonClass.GetWindowsServiceInstallPath(serciecName) + strIniFileName;            }            else //i18n            {                iniFilePath = HttpContext.Current.Request.PhysicalApplicationPath + strIniFileName;            }        }        #region 读写INI文件        /// <summary>        /// 读取INI文件        /// </summary>        /// <param name="IniKey"></param>        /// <returns></returns>        public string IniValue(string Section, string IniKey)        {            if (System.IO.File.Exists(iniFilePath))            {                System.IO.File.GetAccessControl(iniFilePath);                StringBuilder temp = new StringBuilder(500);                while (true)                {                    try                    {                        GetPrivateProfileString(Section, IniKey, "", temp, 500, iniFilePath);                    }                    catch (Exception ex)                    {                        System.Threading.Thread.Sleep(50);                        break;                    }                    break;                }                return temp.ToString();            }            else                return string.Empty;        }        /// <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)        {            if (System.IO.File.Exists(iniFilePath))            {                while (true)                {                    try                    {                        WritePrivateProfileString(Section, Key, Value, iniFilePath);                    }                    catch                    {                        System.Threading.Thread.Sleep(50);                        return;                    }                    return;                }            }            else                return;        }        public string[] GetSectionNames()        {            if (System.IO.File.Exists(iniFilePath))            {                byte[] byBuff = new byte[MAXENTRY];                GetPrivateProfileSectionNames(byBuff, MAXENTRY, iniFilePath);                return Encoding.Default.GetString(byBuff).Trim('\0').Split('\0');            }            else            {                string[] strReturn = new string[0];                return strReturn;            }        }        [DllImport("kernel32")]        private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);        [DllImport("kernel32")]        private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);        [DllImport("kernel32")]        private static extern int GetPrivateProfileSectionNames(byte[] byRetBuff, int iSize, string filePath);        #endregion        static public string getXmlNodeValue(string filePath, string nodeName)        {            XmlDocument xmldoc = new XmlDocument();            xmldoc.Load(filePath);            XmlNodeList nodes = xmldoc.GetElementsByTagName("add");            string strvalue = "";            for (int i = 0; i < nodes.Count; i++)            {                XmlAttribute att = nodes[i].Attributes["key"];                if (att.Value == nodeName)                {                    strvalue = nodes[i].Attributes["value"].Value;                }            }            return strvalue;        }    }


原创粉丝点击