ini 文件是Initialization File的縮寫,即初始化文件,是windows的系統配置文件所采用的存儲格式,統管windows的各項配置,一般用戶就用windows提供的各項圖形化管理界面就可實現相同的配置了。但在某些情況,還是要直接編輯ini才方便,一般只有很熟悉windows才能去直接編輯。開始時用於WIN3X下面,WIN95用注冊表代替,以及后面的內容表示一個節,相當於注冊表中的鍵。
具體Format
INI文件由節(Section)、參數Item:鍵(key)、值(value)組成。
- data
[section name]
參數(鍵=值)
name=value
- 注解
注解使用分號表示(;)。在分號后面的文字,直到該行結尾都全部為注解。
; comment textINI文件的數據格式的例子(配置文件的內容) [Section1 Name]
KeyName1=value1
KeyName2=value2
因為INI文件可能是項目中共用的,所以使用[Section Name]段名來區分不同用途的參數區。
Java操作
在常規的WIn平台下,ini文件的默認編碼格式是ANSI。
不同的國家和地區制定了不同的標准,由此產生了 GB2312、GBK、GB18030、Big5、Shift_JIS 等各自的編碼標准。這些使用多個字節來代表一個字符的各種漢字延伸編碼方式,稱為 ANSI 編碼。在簡體中文Windows操作系統中,ANSI 編碼代表 GBK 編碼;在繁體中文Windows操作系統中,ANSI編碼代表Big5;在日文Windows操作系統中,ANSI 編碼代表 Shift_JIS 編碼。
不同 ANSI 編碼之間互不兼容,當信息在國際間交流時,無法將屬於兩種語言的文字,存儲在同一段 ANSI 編碼的文本中。
ANSI在我們國內的具體編碼實現實際上是GB2312(或GBK),所以我們對這種格式的文本數據進行操作即可。
Java INI Package (JavaINI) 是一個 Java 語言用來讀寫 INI 文件的工具包.Project Location,以下稱為Ini開源包.
Ini開源包默認的編碼格式是ASCII,也就是默認只操作范圍內的128個字符,這會大大限制Ini開源包的功能。通過修改org.dtools.ini包的IniFileWriter類改屬性值ENCODING,修改成適合我們的編碼。GB2312、GBK在國內使用,因為win平台建立的ini文件默認就是ANSI編碼,所以推薦修改為這兩種編碼格式。如果想要國際化,則可將ENCODING修改為UTF-8即可。
- 讀操作
IniFile ini = new BasicIniFile(false);//不使用大小寫敏感
public void readContent(){
IniFileReader reader = new IniFileReader(ini, file);
try {
reader.read();
} catch (IOException e) {
e.printStackTrace();
}
//獲取ini文件的所有Section
for(int i=0;i<ini.getNumberOfSections();i++){
IniSection sec = ini.getSection(i);
//獲取每個Section的Item
System.out.println("---- " + sec.getName() + " ----");
for(IniItem item : sec.getItems()){
System.out.println(item.getName() + " = " + item.getValue());
}
}
}
- 寫操作
public void writeContent(){
//創建一個數據Section,在本例中Section名為 config
IniSection dataSection = new BasicIniSection( "config" );
ini.addSection( dataSection );
//在上面的Section中添加Item,包括name、sex、age
IniItem nameItem = new IniItem( "name" );
nameItem.setValue("煙雨江南");
dataSection.addItem( nameItem );
IniItem ageItem = new IniItem( "age" );
ageItem.setValue("999999");
dataSection.addItem( ageItem );
IniItem sexItem = new IniItem( "sex" );
sexItem.setValue("男");
dataSection.addItem( sexItem );
//將數據寫入到磁盤
IniFileWriter writer=new IniFileWriter(ini, file);
try {
writer.write();
} catch (IOException e) {
e.printStackTrace();
}
}