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; } }