Java读取ini配置
来源:互联网 发布:在node中怎样进入目录 编辑:程序博客网 时间:2024/04/29 23:08
[section1]
key1=value1
[section2]
key2=value2
。。。。
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 类名:读取配置类<br>
* @author Phonnie
*
*/
public class ConfigReader {
/**
* 整个ini的引用
*/
private Map<String,Map<String, List<String>>> map = null;
/**
* 当前Section的引用
*/
private String currentSection = null;
/**
* 读取
* @param path
*/
public ConfigReader(String path) {
map = new HashMap<String, Map<String,List<String>>>();
try {
BufferedReader reader = new BufferedReader(new FileReader(path));
read(reader);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("IO Exception:" + e);
}
}
/**
* 读取文件
* @param reader
* @throws IOException
*/
private void read(BufferedReader reader) throws IOException {
String line = null;
while((line=reader.readLine())!=null) {
parseLine(line);
}
}
/**
* 转换
* @param line
*/
private void parseLine(String line) {
line = line.trim();
// 此部分为注释
if(line.matches("^\\#.*$")) {
return;
}else if (line.matches("^\\[\\S+\\]$")) {
// section
String section = line.replaceFirst("^\\[(\\S+)\\]$","$1");
addSection(map,section);
}else if (line.matches("^\\S+=.*$")) {
// key ,value
int i = line.indexOf("=");
String key = line.substring(0, i).trim();
String value =line.substring(i + 1).trim();
addKeyValue(map,currentSection,key,value);
}
}
/**
* 增加新的Key和Value
* @param map
* @param currentSection
* @param key
* @param value
*/
private void addKeyValue(Map<String, Map<String, List<String>>> map,
String currentSection,String key, String value) {
if(!map.containsKey(currentSection)) {
return;
}
Map<String, List<String>> childMap = map.get(currentSection);
if(!childMap.containsKey(key)) {
List<String> list = new ArrayList<String>();
list.add(value);
childMap.put(key, list);
} else {
childMap.get(key).add(value);
}
}
/**
* 增加Section
* @param map
* @param section
*/
private void addSection(Map<String, Map<String, List<String>>> map,
String section) {
if (!map.containsKey(section)) {
currentSection = section;
Map<String,List<String>> childMap = new HashMap<String, List<String>>();
map.put(section, childMap);
}
}
/**
* 获取配置文件指定Section和指定子键的值
* @param section
* @param key
* @return
*/
public List<String> get(String section,String key){
if(map.containsKey(section)) {
return get(section).containsKey(key) ?
get(section).get(key): null;
}
return null;
}
/**
* 获取配置文件指定Section的子键和值
* @param section
* @return
*/
public Map<String, List<String>> get(String section){
return map.containsKey(section) ? map.get(section) : null;
}
/**
* 获取这个配置文件的节点和值
* @return
*/
public Map<String, Map<String, List<String>>> get(){
return map;
}
}
- Java读取ini配置
- Java读取ini配置
- 读取ini配置
- C# 读取ini配置 :
- java读取ini文件
- java读取ini文件
- java读取config.ini
- java读取ini文件
- Java读取ini文件
- Java读取ini方法
- Java读取.ini文件
- java读取、写入保存、遍历ini文件配置数据
- go读取ini文件配置
- Java读取解析INI配置文件
- [Java]Ini配置文件的读取
- ACE读取ini格式的配置文档
- ACE读取ini格式的配置文档
- ACE读取ini格式的配置文档
- zval_dtor与zval_ptr_dtor的区别
- mongoDB 入门指南、示例
- 为什么程序员不擅长估算时间
- jQuery插件开发全解析
- java中类加载路径和项目根路径获取的几种方式
- Java读取ini配置
- java文件读写操作指定编码格式
- Windows下批量删除.svn文件
- Java jdbc数据库连接池总结!
- 手动进行Excel数据和MySql数据转换
- svn: 目录中的条目从本地编码转换到 UTF8 失败 解决办法
- svn hook同步更新web
- SVN项目交叉
- 再发一个J2ME和WAP网页实现拨号功能(很有价值哦)