使用java读取配置文件(ini、properties)

JDK自带的Properties可以读取properties类型的文件,但是对于ini文件进行读取时遇到转义字符时会有问题,例如当遇到STOREPATH = d:\test\,用Properties类读取时会将\t当成一个TAB来处理,因此自己写了一个简单读取配置文件的类,功能并不完善,对与ini文件中不同section中同名属性并没有做处理。import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.HashMap; import java.util.Map; public final class ConfigUtils { public static Map<String, String> propMap = null; /** 初始化 */ public static void init(String path){ propMap = new HashMap<String, String>(); BufferedReader br = null; try { br = new BufferedReader(new FileReader(path)); String line = ""; while((line = br.readLine()) != null){ if(line.indexOf("=") != -1 && !line.trim().startsWith("#") && !line.trim().startsWith("//")){ String[] lineArr = line.split("="); propMap.put(lineArr[0].trim(), lineArr[1].trim()); } } } catch (Exception e) { e.printStackTrace(); } finally { try { br.close(); } catch (IOException e) { e.printStackTrace(); } } } /** * 获取所有键值对组成的Map * @param path 配置文件所在路径 * @return */ public static Map<String, String> getPropMap(String path){ // if(propMap == null || propMap.isEmpty()){ init(path); // } return propMap; } /** * 获取属性值 * @param path 配置文件所在路径 * @param key 属性名 * @return */ public static String getPropValue(String path, String key){ // if(propMap == null || propMap.isEmpty()){ init(path); // } return propMap.get(key); } /** * 设置某个属性的值 * @param path * @param key * @param value */ public static void setPropValue(String path, String key, String value){ Map<String, String> map = new HashMap<String, String>(); map.put(key, value); setPropValues(path, map); } /** * 根据Map设置属性 * @param path * @param map */ public static void setPropValues(String path, Map<String, String> map){ BufferedReader br = null; BufferedWriter bw = null; try { br = new BufferedReader(new FileReader(path)); StringBuffer sb = new StringBuffer(); String line = ""; // 读取文件并对替换文件内容 while((line = br.readLine()) != null){ if(line.indexOf("=") != -1 && !line.trim().startsWith("#") && !line.trim().startsWith("//")){ String[] lineArr = line.split("="); String key = lineArr[0].trim(); String newValue = map.get(key); if(null != newValue && !"".equals(newValue)){ sb.append(key).append(" = ").append(newValue).append("\r\n"); }else{ sb.append(line).append("\r\n"); } }else{ sb.append(line).append("\r\n"); } } br.close(); bw = new BufferedWriter(new FileWriter(path)); // 写入文件 bw.write(sb.toString()); } catch (Exception e) { e.printStackTrace(); } finally { try { br.close(); bw.close(); } catch (IOException e) { e.printStackTrace(); } } } /** */ /** * 程序测试 */ public static void main(String[] args) { } }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值