当前位置: 首页 > 编程语言 > C#

用C#读取ini文件分享

时间:2023-04-11 01:47:17 C#

ReadinganinifilewithC#sr.ReadToEnd();string[]splitCache=cache.Split(newstring[]{"n","rn"},StringSplitOptions.RemoveEmptyEntries);这给了我一个设置列表,但是,我想做的是把它当作字典来读。我的问题是,有没有一种方法可以在不迭代整个数组并手动填充字典的情况下执行此操作?那么,您可以使用LINQ并执行Dictionaryini=(fromentryinsplitCacheletkey=entry.Substring(0,entry.FirstIndexOf("="))letvalue=entry.Substring(entry.FirstIndexOf("="))selectnew{key,value}).ToDictionary(e=>e.key,e=>e.value);正如BinaryWorrier在评论中指出的那样,这种方式与其他答案建议的简单循环相比没有任何优势。编辑:上面块的较短版本是Dictionaryini=splitCache.ToDictionary(entry=>entry.Substring(0,entry.FirstIndexOf("="),entry=>entry.Substring(entry.FirstIndexOf("="="));迭代有什么问题?varlines=File.ReadAllLines("pathtoyourfile.ini");vardict=newDictionary();foreach(varsinlines){varsplit=s.Split("=");dict.Add(split[0],split[1]);}实际上在kernel32.dll中有一个用于读取/写入INI文件的WindowsAPI;有关示例,请参阅这篇CodeProject文章。INI文件有点棘手,所以我不建议自己动手。我写了Nini,它是一个配置库,具有非常快的解析器。样本INI文件:;这是评论[MySection]key1=value1key2=value2[Pets]dog=rovercat=muffy相同的C#代码://LoadthefileIniDocumentdoc=newIniDocument("test.ini");//打印键的数据Console.WriteLine("Key1:"+doc.Get("MySection","key1"));Console.WriteLine("Key2:"+doc.Get("Pets","dog"));//创建一个新节doc.SetSection("Movies");//在部分中设置新值doc.SetKey("Movies","horror","Scream");doc.SetKey("电影","喜剧","阿呆与阿瓜");//从节中删除节或值doc.RemoveSection("MySection");doc.RemoveKey("宠物","狗");//保存更改doc.Save("test.ini");试试这种吧[DllImport("kernel32.dll",EntryPoint="GetPrivateProfileString")]publicstaticexternintGetPrivateProfileString(stringSectionName,stringKeyName,stringDefault,StringBuilderReturn_StringBuilder_Name,intSize,stringFileName);并调使用这样的函数GetPrivateProfileString(Section_Na我,"设置","0",StringBuilder_Name,10,"filename.ini");可以从StringBuilder_Name访问值为什么不将文件作为单独的行读取,然后在第一个=中读取?拆散他们?vardict=newDictionary();foreach(varlineinFile.ReadAllLines(filename)){varparts=line.Split('=',2);//最多2个部分,因此忽略值中的“=”。dict.Add(零件[0],零件[1]);}(.NET4中,将ReadAllLines替换为ReadLines,避免创建数组,ReadLines返回IEnumerable,懒惰读取文件。)以上是C#学习教程:使用C#读取ini文件分享的全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: