您的位置:首页 > 编程语言 > Java开发

用Java读取INI文件(带section的)

2011-12-28 22:56 288 查看
最终是通过Properties来实现的,比直接字符流来读取多了很多便利. 可以直接定位到域,根据键就能拿到值.而不是遍历判断来取值

/* 

* IniReader.java 

* 用Java读取INI文件(带section的) 

* 示例: 

* tmp.IniReader reader = new tmp.IniReader("E:\\james\\win.ini"); 

* out.println(reader.getValue("TestSect3", "kkk 6")); 

*/ 

package tmp; 

import java.io.BufferedReader; 

import java.io.FileReader; 

import java.io.IOException; 

import java.util.HashMap; 

import java.util.Properties; 

public class IniReader { 

protected HashMap sections = new HashMap(); 

private transient String currentSecion; 

private transient Properties current; 

public IniReader(String filename) throws IOException { 

BufferedReader reader = new BufferedReader(new FileReader(filename)); 

read(reader); 

reader.close(); 



protected void read(BufferedReader reader) throws IOException { 

String line; 

while ((line = reader.readLine()) != null) { 

parseLine(line); 





protected void parseLine(String line) { 

line = line.trim(); 

if (line.matches("\\[.*\\]")) { 

currentSecion = line.replaceFirst("\\[(.*)\\]", "$1"); 

current = new Properties(); 

sections.put(currentSecion, current); 

} else if (line.matches(".*=.*")) { 

if (current != null) { 

int i = line.indexOf('='); 

String name = line.substring(0, i); 

String value = line.substring(i + 1); 

current.setProperty(name, value); 







public String getValue(String section, String name) { 

Properties p = (Properties) sections.get(section); 

if (p == null) { 

return null; 



String value = p.getProperty(name); 

return value; 



}

ini文件如下: 

[TestSect1] 

kkk 1=VVVVVVVVVVV1 

kkk 2=VVVVVVVVVVV2 

[TestSect2] 

kkk 3=VVVVVVVVVVV3 

kkk 4=VVVVVVVVVVV4 

[TestSect3] 

kkk 5=VVVVVVVVVVV5 

kkk 6=VVVVVVVVVVV6
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息