- 最后登录
- 2020-3-16
- 注册时间
- 2014-4-17
- 阅读权限
- 90
- 积分
- 7683
- 纳金币
- 2378
- 精华
- 0
|
服务器端开发的时候经常会用到一些配置,比如说ip呀,端口呀,以及一些需要经常变更的变量不想写死在代码里,这时候大家一般都会想到配置文件,用VS创建的C#项目会自带一个app.config,用这个xml来做配置也是一个不错的选择,不过个人不太喜欢xml,所以还是选择了用ini文件来存储一些配置。
先上代码,代码其实很简单
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
public class AIniLoader
{
private Dictionary<string, string> dIniNodes = new Dictionary<string, string>();
private Dictionary<string, string> dDefaultValues = new Dictionary<string, string>();
public void OnSetDefaultValue(string key, int value)
{
OnSetDefaultValue(key, value.ToString());
}
public void OnSetDefaultValue(string key, string value)
{
if (dDefaultValues.ContainsKey(key))
{
dDefaultValues[key] = value;
}
else
{
dDefaultValues.Add(key, value);
}
}
private string fileName = "";
public void LoadIniFile(string sFileName)
{
fileName = sFileName;
if (!File.Exists(sFileName))
{
File.Create(sFileName).Close();
}
else
{
StreamReader mysr = new StreamReader(sFileName, System.Text.Encoding.UTF8);
string strline = "";
while ((strline = mysr.ReadLine()) != null)
{
string[] astr = strline.Split(new char[] { '=' }, 2);
if (astr.Length != 2)
{
Console.WriteLine("Invalid line " + strline);
continue;
}
dIniNodes.Add(astr[0], astr[1]);
}
mysr.Close();
}
}
public int OnGetIntValue(string sNodeName)
{
return typeParser.intParse(OnGetValue(sNodeName));
}
public void OnSetValue(string sNodeName, string sValue)
{
if (dIniNodes.ContainsKey(sNodeName))
{
dIniNodes[sNodeName] = sValue;
}
else
{
dIniNodes.Add(sNodeName, sValue);
}
}
public string OnGetValue(string sNodeName)
{
if (!dIniNodes.ContainsKey(sNodeName))
{
if (dDefaultValues.ContainsKey(sNodeName))
{
return dDefaultValues[sNodeName];
}
return "";
}
return dIniNodes[sNodeName];
}
public void OnSaveBack()
{
string shistory = "";
foreach (string str in dIniNodes.Keys)
{
shistory += str + "=" + dIniNodes[str] + "\n";
}
foreach (string str in dDefaultValues.Keys)
{
if (dIniNodes.ContainsKey(str))
{
continue;
}
shistory += str + "=" + dDefaultValues[str] + "\n";
}
StreamWriter sw = new StreamWriter(fileName);
sw.Write(shistory);
sw.Close();
}
}
|
使用的时候先new一个AIniLoader的实例,然后调用LoadIniFile()方法,传入ini文件的路径。
例:
AIniLoader iniLoader = new AIniLoader();
iniLoader.LoadIniFile("Server.ini");
string ip = iniLoader.OnGetValue("serverIP");
int port = iniLoader.OnGetIntValue("serverPort");
|
ini文件中的数据是这样的格式:
serverIP=127.0.0.1
serverPort=999
|
|
|