INI是 initialization的缩写。INI文件是一种轻量级的配置文件,广泛地用于各种操作系统和软件中。INI文件是一种简单的文本文件,基本结构很简单、可读性高,必要的元素只有两种:section、property(包括name/key和value)。
历史:
在MS-DOS和16位Windows系统中,直到Windows ME为止,都是使用INI文件作为操作系统配置文件(比如:win.ini, system.ini),用来配置驱动、字体、启动项、等等等等。各种应用软件也广泛地采用INI文件来保存自己的配置信息。
Windows NT之后,微软开始采用和推广注册表来保存配置信息,并引导开发者尽量使用注册表。然而,由于注册表不是跨操作系统可用的,所有很多应用程序还是喜欢并继续使用INI文件,就算有些不是以ini作为扩展名(比如conf、txt等),也是使用了类似的section、property两种元素。
格式/元素:
Property:
一般是由“=”号分隔的key(或叫name)/value对。一个property占用一行。例子:
name = value
myName = 张三
Section:
就是由若干个property的归类和分组,一个section占用一行,名字放在中括号“[]”里面。section定义后面的所有property都属于这个section,直到下一个section出现为止。
大小写:在windows中,大小写是不敏感的。
注释:windows中的注释是以分号“;”开始的文字(Linux用井号“#”)
除了以上的标准定义之外,一些应用程序还支持和补充了其他扩展的格式:
空行:某些程序不允许有空行;
注释:有些程序支持使用井号“#”做注释的开头;有些程序不允许注释和section、property混在一行中;
重名:如有重名的property,有些程序取第一个,有些取最后一个,(section重名的话无所谓,一般就是合并他们的properties);
转义符:有些程序支持转义符,特别是反斜杠“\”在行末作为两行的连接符;
Global properties:有些程序支持在第一个section标签之前可以有properties,并把它们归类为“global” section;
空格:大多数程序支持处理name/value前后的空格,以便文字对齐增强可读性;
顺序:绝大多数程序是不管section和property出现的顺序的;
和其他类型配置文件的比较:
xml, json, yaml文件:他们都支持嵌套定义properties,但属于重量级的配置文件,语法比较复杂。
Java编码实现读取:
实现的功能:
* 读取 INI 文件,存放到Map中
*