当前位置:编程学习 > C#/ASP.NET >>

C# 使用文件流来读写ini文件

背景
  之前采用ini文件作为程序的配置文件,觉得这种结构简单明了,配置起来也挺方便。然后操作方式是通过WindowsAPI,然后再网上找到一个基于WindowsAPI封装的help类,用起来倒也顺手。用的多了,觉得还可以使用文件流来操作,后来就发现了EasyConfig。
 
  EasyConfig是一个纯C#的开源ini文件操作库,但是在使用上有诸多不便,只是个人感觉,于是个人将其改造了一下,是自己喜欢用的风格。
 
资源下载
  如果不清楚ini文件结构,请百度一下,这里贴一个示例文件。
 
 Ini文件示例
  EasyConfig 原版
 
  EasyConfig 改写后
 
代码示例
  首先来看看改写后,怎么去使用她来读写Ini文件。
 
 
        static void Main(string[] args)
        {
            ConfigFile configFile = new ConfigFile("Test.ini");
 
            //遍历Config文件
            foreach (var group in configFile.SettingGroups)
            {
                Console.WriteLine("****************************");
                Console.WriteLine(group.Key + ":");
                Console.WriteLine();
 
                foreach (var value in group.Value.Settings)
                    Console.WriteLine("{0} = {1} (Is Array? {2}),{3}", value.Key, value.Value.RawValue, value.Value.IsArray, value.Value.Desp);
 
                Console.WriteLine();
            }
            //读取值主要是在具体的配置项上进行读取,是首先定位到[Group],其次就是具体的项
            //使用泛型读取值,并指定读取失败时的默认值
            var fullScreen = configFile["Video"]["Fullscreen"].As<int>(-1);//失败
            var bFullScreen = configFile["Video"]["Fullscreen"].AsBool();//成功
            var arrCanShoot = configFile["Level1"]["CanShoot"].AsArray<bool>();
            //读取时 该项不存在,不存在的组或者项会自动添加
            var noexists = configFile["Video"]["xxxxxxxxxxx"].AsString();
            var noexists2 = configFile["Video111111111"]["xxxxxxxxxxx"].AsString();
 
            //写入值有2种方法,可以直接向某组下写入一项,也可以定位到某组某项,写入值
            //写入值 该项不存在,组或者项会自动创建
            configFile["Video"].WriteSetting("NewName", "EasyConfig");
            configFile["Video"].WriteSetting("NewName", "EasyConfig2.0");
            configFile["Video22222222"].WriteSetting("c1", "1");
            //索引器不过是返回Setting
            configFile["Video3333"]["UserName"].SetValue("admin");
            configFile["Viedo4444"]["Sex"].SetValue("男", "女", "保密");
            //写入值,该项不存在
            configFile["Video222"].WriteSetting("NewName", "EasyConfig3.0");
 
 
            Console.ReadKey(true);
 
            configFile.Save("TestConfig2.txt");
        }
 
  基本上自己想要的效果,则是基于 ConfigFile["GroupName"]["Key"] 这样的方式来进行读写。
 
 
 
  另外附上一个基于WindowsAPI操作的封装类。
 
 IniFileHelp
补充:软件开发 , C# ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,