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(参数名)
该类主要分装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文件初始化实例。
源码下载