• C#操作ini文件


       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('').Split('');
                }
                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;
            }
    
        }



  • 相关阅读:
    python 模块基础介绍
    python 函数基础介绍
    性能测试总结与分享材料
    徒手撸一个简单的RPC框架
    【springcloud】一文带你搞懂API网关
    一次非常有意思的sql优化经历
    MySQL数据库之互联网常用分库分表方案
    后端开发应该掌握的Redis基础
    权限管理模块设计
    基于redis的分布式锁的分析与实践
  • 原文地址:https://www.cnblogs.com/james1207/p/3313275.html
Copyright © 2020-2023  润新知