C#操作ini文件
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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('\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;
}
}