Java读取ini配置
本文转载地址:
http://www.cnblogs.com/Jermaine/archive/2010/10/24/1859673.html
不够通用,呵呵。
读取ini的配置的格式如下:
|
1
2
3
4
5
6
7
|
[section1]key1=value1[section2]key2=value2。。。。 |
其中可能一个Key对应多个value的情况。
代码如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
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配置
转自: http://www.cnblogs.com/Jermaine/archive/2010/10/24/1859673.html 读取ini的配置的格式如下: [section1] key1=v ...
- golang 读取 ini配置信息
package main //BY: 29295842@qq.com//这个有一定问题 如果配置信息里有中文就不行//[Server] ;MYSQL配置//Server=localhost ...
- java读取ini文件
ini工具类; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import j ...
- php读取ini配置文件属性
ini的内容格式如下,请根据自己的INI,格式修改下段程序. autostart = false font_size = font_color = red =================== fu ...
- boost::property_tree 读取ini配置
应用场景: 在后端服务器项目开发中,需要初始化一个Socket服务器,需要IP地址与对应端口号等参数:另外还可能因为对接数据库,就还需要数据库的相关配置参数,如我使用的是MySql数据库,就需要数据库 ...
- java 读取ini文件
1.情景:需要将硬代码写到文件中,这样以后改动只需改动灵活 1)txt文件,需要将这code字符串读到代码中,保存成数组 2)导包:pom.xml添加依赖: <dependency> &l ...
- 转 python3 读取 ini配置文件
在代码中经常会通过ini文件来配置一些常修改的配置.下面通过一个实例来看下如何写入.读取ini配置文件. 需要的配置文件是: 1 [path] 2 back_dir = /Users/abc/Pych ...
- 关于自动化测试框架,所需代码技能,Java篇——参数配置与读取.
前言: 说在前边.像我这种假期不出去浪,在这里乖乖写文章研究代码的人,绝壁不是因为爱学习,而是自己不知道去哪玩好,而且也不想玩游戏,看电视剧什么的,结果就无聊到看代码了…… 至于如何解读代码,请把它当 ...
- Java可读取操作系统的配置
/** * Java获取操作系统的配置环境 * @throws Exception */ @Test public void testPro() throws Exception { Properti ...
随机推荐
- JSP自定义不带属性和标签体的简单标签
1. 新建HelloTag类 2. 添加额外的Jar包 (1). 右键项目 -> Build Path -> Configure Build Path -> Libraries -& ...
- mysql 4 索引的优缺点
为什么要创建索引呢?这是因为,创建索引可以大大提高系统的性能. 第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性. 第二,可以大大加快 数据的检索速度,这也是创建索引的最主要的原因. 第 ...
- 前端开发框架简介:angular和react
作者:vienwu react是facebook推出一个用来构建用户界面的js库.官方介绍的三大特性如下: just the ui 把react只当作一个ui组件就好,等同于传统mvc中的view. ...
- android设备使用usb串口传输数据
首先介绍两个开源项目一个是Google的开源项目:https://code.google.com/archive/p/android-serialport-api/ 另一个是我们这次介绍的开源项目:h ...
- GreenDao与Rx的完美搭配
作为Android开发者,一定不会对 GreenDao 和 ReactiveX 陌生. GreenDao 号称Android最快的关系型数据库 ReactiveX Rx是一个编程模型,目标是 ...
- for xml path 如何将字段转换为xml的属性
for xml path 如何将字段作为xml的属性: 可在查询时 别名用 as '@..' 如'@value' 如下实例: SELECT A.GiftSetGUID AS '@value',A.Gi ...
- Nginx Access Log日志统计分析常用命令
Nginx Access Log日志统计分析常用命令 IP相关统计 统计IP访问量 awk '{print $1}' access.log | sort -n | uniq | wc -l 查看某一时 ...
- mysql数据库实操笔记20170419
一.insert与replace区别: insert:当表里有字段设置了主键或者唯一时,插入重复的唯一或主键字段值是不能执行的: replase:当表里有字段设置了主键或者唯一时,插入重复的唯一或主键 ...
- QuartusII13.0使用教程详解(一个完整的工程建立)
好久都没有发布自己的博客了,因为最近学校有比赛,从参加到现在都是一脸懵逼,幸亏有bingo大神的教程,让我慢慢走上了VIP之旅,bingo大神的无私奉献精神值得我们每一个业界人士学习,向bingo致敬 ...
- mysql行列转换方法总结
这是一道行转列并且构造交叉表的问题: http://topic.csdn.net/u/20090530/23/0b782674-4b0b-4cf5-bc1a-e8914aaee5ab.html 数据样 ...