该工具类为读取ini配置文件工具类:
package com.bgxt.utils;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Properties;
public class ReadInIFile {
public HashMap sections = new HashMap();
private transient String currentSecion;
private transient Properties current;
public HashMap<String,String> iniMaps = new HashMap<String,String>();
/**
* 构造函数
* @param filename
* @throws IOException
*/
public ReadInIFile(BufferedReader reader) throws IOException {
read(reader);
reader.close();
}
/**
* 读取文件
* @param reader
* @throws IOException
*/
protected void read(BufferedReader reader) throws IOException {
String line;
while ((line = reader.readLine()) != null) {
parseLine(line);
}
}
/**
* 解析配置文件行
* @param line
*/
@SuppressWarnings("unchecked")
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);
iniMaps.put(name, value);
}
}
}
/**
* 获取值
* @param section 要修改的变量所在段名称
* @param name
* @return
*/
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;
}
/**
* 是否包含key
* @param section
* @param name
* @return
*/
public boolean containsKey(String section,String key) {
Properties p = (Properties) sections.get(section);
return p.contains(key);
}
}
应用ini类读取配置文件:
public static Map<String,String> readFile() throws Exception {
InputStream in = FcRead.class.getClassLoader().getResourceAsStream("resource/fc.ini");
BufferedReader br = new BufferedReader(new InputStreamReader(in,"gb2312"));
Properties props = new Properties();
ReadInIFile rf=new ReadInIFile(br);
Map<String, String> map = new HashMap<String, String>();
HashMap<String,String> mapInI = rf.iniMaps;
String path = mapInI.get("FcPath");
String url=mapInI.get("url");
String username=mapInI.get("username");
String password=mapInI.get("password");
String driver=mapInI.get("driver");
map.put("FcPath",path);
map.put("driver", driver);
map.put("url", url);
map.put("username", username);
map.put("password", password);
System.out.println(map.size());
return map;
}
public static void main(String[] args) throws IOException {
InputStream in = FcRead.class.getClassLoader().getResourceAsStream("resource/fc.ini");
BufferedReader br = new BufferedReader(new InputStreamReader(in,"gb2312"));
ReadInIFile rf=new ReadInIFile(br);
System.out.println(rf.getValue("PATH","url" ));
}
ini配置文件:
[PATH]
FcPath=C:\Users\Administrator\Desktop\公牛项目\hread.txt
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@192.168.10.208:1521:ORCL
username=crc1prod
password=crc1prod