Ini文件读写解决方案_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > Ini文件读写解决方案

Ini文件读写解决方案

 2014/3/26 10:04:44  流沙inaction  博客园  我要评论(0)
  • 摘要:第一章INI文件说明ini是微软Windows操作系统中的文件扩展名(也常用在其他系统)。INI是英文“初始化(Initial)”的缩写。正如该术语所表示的,INI文件被用来对操作系统或特定程序初始化或进行参数设置。在Windows操作系统中存在两个INI文件:SYSTEM.INI和WIN.INI。在纯文本处理器或DOS编辑器中打开INI文件就有可能知道这些文件大概要做些什么。这些文件中包括对鼠标,键盘,外围设备,显示器颜色,密码等的变量参数的设置声明。在正常情况下
  • 标签:解决方案 解决 文件

第一章 INI文件说明

ini是微软Windows操作系统中的文件扩展名(也常用在其他系统)。INI是英文“初始化(Initial)”的缩写。正如该术语所表示的,INI文件被用来对操作系统或特定程序初始化或进行参数设置。

在Windows操作系统中存在两个INI文件:SYSTEM.INI和WIN.INI。在纯文本处理器或DOS编辑器中打开INI文件就有可能知道这些文件大概要做些什么。这些文件中包括对鼠标,键盘,外围设备,显示器颜色,密码等的变量参数的设置声明。在正常情况下,这些文件在文本编辑器中不能被改动。(如文本编辑器在关闭之前显示“保存修改”,这时应点“否”。) 在Windows 95, 98, NT及之后的版本中,大部分的设置是通过对注册表的修改实现的,而不是通过使用INI文件。某些程序包含自身的INI文件。这些文件的内容的修改通常是通过该程序的用户界面来更改程序的特征,并不是通过编辑文件本身来进行的。

格式

[section]

参数

name=value

注解

注解使用分号表示(;)。在分号后面的文字,直到该行结尾都全部为注解。

; comment text

作用

.ini , .inc之类的文件,一般是放一些常量或数据库链接语句等,再在需要的页面包含进去,和直接命为 asp 是没什么区别的。

但为了安全性,最好不要用这些后缀名,因为知道文件名时,在浏览器里输入该文件的地址时,可看到所有内容的。

在Windows系统中,INI文件是很多,最重要的就是“System.ini”、“System32.ini”和“Win.ini”。该文件主要存放用户所做的选择以及系统的各种参数。用户可以通过修改INI文件,来改变应用程序和系统的很多配置。但自从Windows 95的推出,在Windows系统中引入了注册表的概念,INI文件在Windows系统的地位就开始不断下滑,这是因为注册表的独特优点,使应用程序和系统都把许多参数和初始化信息放进了注册表中。但在某些场合,INI文件还拥有其不可替代的地位。

.ini 文件是windows的系统配置文件,统管windows的各项配置,一般用户就用windows提供的各项图形化管理界面就可实现相同的配置了,但在某些情况,还是要直接编辑.ini才方便,一般只有很熟悉windows才能去直接编辑。开始时用于WIN3.1下面,WIN95用注册表代替,[]及后面的内容表示一个节,相当于注册表中的键。

除了windows现在很多windows下面的应用软件也有.ini文件,用来配置应用软件以实现不同用户的要求。一般不用直接编辑这些.ini文件,应用程序的图形界面即可操作以实现相同的功能。

第二章 接口实用说明

         一般的大型ERP项目,往往会有很多初始信息需要在配置文件中配置。这样就涉及到一个配置文件读取和管理的问题。

         该接口使用面向对象的编程习惯,将配置信息抽象成一个类,或一个对象,以后简称配置信息类。配置信息类只需继承IniAbs接口,配置信息类就具有了读取和保存的功能。

 

使用示例:

如果要配置数据库连接字符串信息,我们需要在配置文件中存储数据库服务器、数据库名称、用户名、密码等信息。我们只需构建类DBConfig:

[IniSection(Description="数据库配置",Section="DB")]

    public class DBConfig : IniAbs<DBConfig>

    {

        [IniFieldDescription(Discription = "数据库名称", Key = "DBName")]

        public string DBName { get; set; }

 

        [IniFieldDescription(Discription = "服务器IP", Key = "DBServer")]

        public string DBServer { get; set; }

 

        [IniFieldDescription(Discription = "用户名", Key = "DBUsername")]

        public string DBUsername { get; set; }

 

        [IniFieldDescription(Discription = "密码", Key = "DBPassword")]

        public string DBPassword { get; set; }

}

 

之后,我们可以使用工厂方法读取配置信息:

DBConfig dbConfig = IniInstanceFactory.GetSingleInstance<DBConfig>();

如果要保存配置信息,只需调用dbConfig.Save()方法,自动将配置信息保存到文件中。

 

第三章 配置文件接口项目源码解析

配置文件读取接口操作全部封装在IFConfiguration.dll中。

IFConfiguration项目主要分成三大块

一、配置信息存储节点描述类

                                

IniSectionAttrbute标记配置信息类,该特性标记配置信息类在ini文件中存储的Section(节)名称。

IniFieldDescriptionAttribute标记配置信息类字段,该特性标记字段在ini文件中存储对应的name(参数名)

二、ini文件操作工具类

 

该类主要分装Windows API方法调用:

/// 声明读写INI文件的API函数

        [DllImport("kernel32")]

        private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);

 

        [DllImport("kernel32")]

        private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);

其中WritePrivateProfileString、GetPrivateProfileString是kernel32动态链接库中的方法COM方法。

三、配置文件信息类基类和配置文件信息类对象创建工厂

 

   IniAbs<T>是配置文件信息类的基类,其Save方法实现了将配置文件信息类对象保存到ini文件中。

public void Save()

        {

            if (!this.CreateByIniAbs)

                return;

            RWini rwini = new RWini(Application.StartupPath + @"\IFSoft.ini");

 

            //循环保存 段

            foreach (var iniField in this.IniFieldProperty.Keys)

            {

                rwini.WriteInivalue(this.Section, iniField.Key, this.IniFieldProperty[iniField].GetValue(this, null).ToString());

            }

        }

IniInstanceFactory类是配置信息类对象创建工厂。其方法GetInstance<T>()、GetSingleInstance<T>()获取配置信息类T的实例,该实例会读取ini文件初始化实例。

第四章 技术说明

    该接口主要使用面向对象的思想,将配置信息的保存和读取封装到对象中。这样做有以下三方面好处:一、配置信息读取方便,只需调用IniInstanceFactory类工厂方法GetInstance即可读取配置信息;二、配置信息保存方便,想修改配置信息,只需操作对象,然后调用Save方法即可实现保存;三、易于制作配置说明文档:对于一个大的项目,配置信息可能会很多,这样管理特别是制作和维护配置实用说明文档是一个非常头痛的事情,由于配置信息说明都实用标准的特性IniSectionAttrbute、IniFieldDescriptionAttribute描述,很容易制作分析工具,自动根据配置信息类代码文件生成使用帮助文档。

    该接口主要包括技术或C#理论:泛型、接口、Windows API调用、继承、多态

 

源码下载

发表评论
用户名: 匿名