这篇文章主要为大家详细介绍了C#读取设置config.ini配置的简单示例,具有一定的参考价值,可以用来参考一下。
感兴趣C#读取设置config.ini配置的简单示例的小伙伴,下面一起跟随四海网的小编罗X来看看吧。<br>
class CSenseIni
{
/************************************************************************/
/*写操作
* strSection 节
* strKey 键
* strValue 需要写入的值
* strFilePath 配置文件的全路径(wince中使用相对路径)
*/
/************************************************************************/
public static void WriteIni(string strSection, string strKey, string strValue, string strFilePath)
{
string strCurr = CPlatformConfig.CurrentPath;
if (strCurr.Length < 2)
strCurr += strFilePath;
else
strCurr += "\\" + strFilePath;
INICommon(false, strSection, strKey, strValue, strCurr);
}
/************************************************************************/
/* 读操作
* strSection 节
* strKey 键
* strDefault 如果未找到相应键对应的值则填入此值
* strFilePath 配置文件的全路径(wince中只能使用绝对全路径)
* 返回: 指定键的相应值
* 说明: 如果在文件中未找到相应节则添加,未找到相应键亦添加,如果键对应的值为空串则使用默认值填充ini文件并返回
/************************************************************************/
public static string GetIni(string strSection, string strKey, string strDefault, string strFilePath)
{
string strCurr = CPlatformConfig.CurrentPath;
if (strCurr.Length < 2)
strCurr += strFilePath;
else
strCurr += "\\" + strFilePath;
return INICommon(true, strSection, strKey, strDefault, strCurr);
}
private static string[] Split(string input, string pattern)
{
string[] arr = System.Text.RegularExpressions.Regex.Split(input, pattern);
return arr;
}
private static void AppendToFile(string strPath, string strContent)
{
if (strContent.Length == 0)
return;
FileStream fs = new FileStream(strPath, FileMode.Append);
StreamWriter streamWriter = new StreamWriter(fs, System.Text.Encoding.Default);
streamWriter.BaseStream.Seek(0, SeekOrigin.End);
streamWriter.WriteLine(strContent);
streamWriter.Flush();
streamWriter.Close();
fs.Close();
}
private static void WriteArray(string strPath, string[] strContent)
{
FileStream fs = new FileStream(strPath, FileMode.Truncate);
StreamWriter streamWriter = new StreamWriter(fs, System.Text.Encoding.Default);
streamWriter.BaseStream.Seek(0, SeekOrigin.Begin);
for (int i = 0; i < strContent.Length; i++)
{
if (strContent[i].Trim() == "\r\n")
continue;
if (strContent[i].Trim() == "")
continue;
streamWriter.WriteLine(strContent[i].Trim());
}
streamWriter.Flush();
streamWriter.Close();
fs.Close();
}
//INI解析
private static string INICommon(bool isRead, string ApplicationName, string KeyName, string Default, string FileName)
{
string strSection = "[" + ApplicationName + "]";
string strBuf;
try
{
//a.文件不存在则创建
if (!File.Exists(FileName))
{
FileStream sr = File.Create(FileName);
sr.Close();
}
//读取INI文件
System.IO.StreamReader stream = new System.IO.StreamReader(FileName, System.Text.Encoding.Default);
strBuf = stream.ReadToEnd();
stream.Close();
}
catch (Exception e)
{
return Default;
}
string[] rows = Split(strBuf, "\r\n");
string oneRow;
int i = 0;
for (; i < rows.Length; i++)
{
oneRow = rows[i].Trim();
//空行
if (0 == oneRow.Length)
continue;
//此行为注释
if (';' == oneRow[0])
continue;
//没找到
if (strSection != oneRow)
continue;
//找到了
break;
}
//b.没找到对应的section,创建一节并创建属性
if (i >= rows.Length)
{
AppendToFile(FileName, "\r\n" + strSection + "\r\n" + KeyName + "=" + Default);
return Default;
}
//找到section
i += 1; //跳过section
int bakIdxSection = i;//备份section的下一行
string[] strLeft;
//查找属性
for (; i < rows.Length; i++)
{
oneRow = rows[i].Trim();
//空行
if (0 == oneRow.Length)
continue;
//此行为注释
if (';' == oneRow[0])
continue;
//越界
if ('[' == oneRow[0])
break;
strLeft = Split(oneRow, "=");
if (strLeft == null || strLeft.Length != 2)
continue;
//找到属性
if (strLeft[0].Trim() == KeyName)
{
//读
if (isRead)
{
//c.找到属性但没有值
if (0 == strLeft[1].Trim().Length)
{
rows[i] = strLeft[0].Trim() + "=" + Default;
WriteArray(FileName, rows);
return Default;
}
else
{
//找到了
return strLeft[1].Trim();
}
}
//写
else
{
rows[i] = strLeft[0].Trim() + "=" + Default;
WriteArray(FileName, rows);
return Default;
}
}
}
//d.没找到对应的属性,创建之并赋为默认
rows[bakIdxSection] = rows[bakIdxSection] + "\r\n" + KeyName + "=" + Default;
WriteArray(FileName, rows);
return Default;
}
}
/* 获取路径*/
public class CPlatformConfig
{
private static string m_CurrentPath;
private static string Platform
{
get
{
return Environment.OSVersion.Platform.ToString();
}
}
//获取执行文件所在文件夹的绝对位置
public static string CurrentPath
{
get
{
//m_CurrentPath = @"D:\Index";
m_CurrentPath = AppDomain.CurrentDomain.BaseDirectory;
//if (Platform.Equals("WinCE"))
//{
// m_CurrentPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
//}
//else if (Platform.Equals("Win32NT"))
//{
// m_CurrentPath = Directory.GetCurrentDirectory();
//}
return m_CurrentPath;
}
set
{
m_CurrentPath = value;
}
}
}
public class CSenseConfig
{
//获取&设置 语言: 0-中文 1-英文
public static int GetLanguage()
{
string szLang = CSenseIni.GetIni("Language", "IsEnglish", "1", "config.ini");
return Convert.ToInt32(szLang);
}
public static void SetLanguage(int iLanguge)
{
CSenseIni.WriteIni("Language", "IsEnglish", iLanguge.ToString(), "config.ini");
}
}
本文来自:http://www.q1010.com/194/16377-0.html
注:关于C#读取设置config.ini配置的简单示例的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。
关键词:config.ini
四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。