其他人写的都是调用非托管kernel32.dll。我也用过但是感觉兼容性有点不好有时候会出现编码错误,毕竟一个是以前的系统一个是现在的系统。咱来写一个纯C#的ini格式配置文件读取,其实就是文本文件读写啦。但是我们要做的绝不仅仅是这样是为了访问操作的方便更是为了以后的使用。
都知道ini格式的配置文件里各个配置项其实就是一行一行的文本key跟value用等号隔开。
像这样:
grade=5。
各个配置项又进行分组同类型的放到一起称之为section以中括号([])区分。
像这样:
[contact]
qq=410910748
website=assassinx.cnblogs.com
[score]
math=85
Chinese=90
geographic=60
各个配置项的key在section内不可重复。
在这里我们为了方便去掉section的概念,实际上也用不怎么到。那么这样一来就可以把个个配置项理解成一个dictionary结构,方便我们存取等操作。至于为什么一定要使用dictionary因为在测试时我发现存取过程中他不会打乱元素的存放顺序晕就这样啊。我们要做到就是根据key去取value。还有就是需要注意到我们有时候需要在配置文件里写注释怎么办呢?就是以分号(;)开头的行。这个问题我们可以在程序里为他初始化特殊的key+序号的形式,写入的时候也同样的进行判断。
这整个过程就是:
程序开始时遍历所有行如果以分号(;)开头则存储此行不作为配置解释,如果不是则解释此行并放到dictionary集合里去。访问时根据key获取value就这么简单。注意注释行的处理 还有更改配置存回去行的先后顺序必须保持原样。
好了开工吧:
代码如下:
publicclassConfig
{
publicDictionary<string,string>configData;
stringfullFileName;
publicConfig(string_fileName)
{
configData=newDictionary<string,string>();
fullFileName=Application.StartupPath+@””+_fileName;
boolhasCfgFile=File.Exists(Application.StartupPath+@””+_fileName);
if(hasCfgFile==false)
{
StreamWriterwriter=newStreamWriter(File.Create(Application.StartupPath+@””+_fileName),Encoding.Default);
writer.Close();
}
StreamReaderreader=newStreamReader(Application.StartupPath+@””+_fileName,Encoding.Default);
stringline;
intindx=0;
while((line=reader.ReadLine())!=null)
{
if(line.StartsWith(“;”)||string.IsNullOrEmpty(line))
configData.Add(“;”+indx++,line);
else
{
string[]key_value=line.Split(‘=’);
if(key_value.Length>=2)
configData.Add(key_value[0],key_value[1]);
else
configData.Add(“;”+indx++,line);
}
}
reader.Close();
}
publicstringget(stringkey)
{
if(configData.Count<=0)
returnnull;
elseif(configData.ContainsKey(key))
returnconfigData[key].ToString();
else
returnnull;
}
publicvoidset(stringkey,stringvalue)
{
if(configData.ContainsKey(key))
configData[key]=value;
else
configData.Add(key,value);
}
publicvoidsave()
{
StreamWriterwriter=newStreamWriter(fullFileName,false,Encoding.Default);
IDictionaryEnumeratorenu=configData.GetEnumerator();
while(enu.MoveNext())
{
if(enu.Key.ToString().StartsWith(“;”))
writer.WriteLine(enu.Value);
else
writer.WriteLine(enu.Key+”=”+enu.Value);
}
writer.Close();
}
}
您可能感兴趣的文章:C#读写文件的方法汇总C#中读写INI文件的方法例子C#中XmlTextWriter读写xml文件详细介绍C#向二进制文件进行读写的操作方法C#读写txt文件的2种方法c#读写excel文件使用示例C#实现文本文件读写方法汇总FtpHelper实现ftp服务器文件读写操作(C#)C#简单读写txt文件的方法C#利用缓存分块读写大文件
c#值类型和引用类型使用示例
C语言中getopt()函数和select()函数的使用方法
上述就是C#学习教程:c#读写ini配置文件示例分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/905440.html