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 ...
随机推荐
- 性能调优案例分享:Mysql的cpu过高
性能调优案例分享:Mysql的cpu过高 问题:一个系统,Mysql数据库,数据量变大之后.mysql的cpu占用率很高,一个测试端访问服务器时mysql的cpu占用率为15% ,6个测试端连服务 ...
- Java类修饰符
- json解包与json封包
首先,对两个名词进行简单的说明: 1.NSData 用来存储二进制的数据类型.NSData类提供了一种简单的方式,它用来设置缓冲区.将文件的内容读入缓冲区,或将缓冲区的内容写到一个文件.不变缓冲区(N ...
- AndroidStudio升级后出现Refresh gradle project和connection timed out的原因和解决方法
笔者发现现在升级AndroidStudio不需要FQ了,于是在看到了升级提醒后手贱点击了升级.可悲剧的一幕发生了, 正在写的一个项目从上到下密密麻麻的错误,看了一下提示要求升级Gradle 那就升级吧 ...
- 前后端分离之vue2.0+webpack2 实战项目 -- webpack介绍
webpack的一点介绍 Webpack 把任何一个文件都看成一个模块,模块间可以互相依赖(require or import),webpack 的功能是把相互依赖的文件打包在一起.webpack 本 ...
- xshell配色Solarized Dark
转自:xshell配色Solarized Dark [Solarized_Dark] text(bold)= magenta(bold)=6c71c4 text= white(bold)=fdf6e3 ...
- QT5 && VS2013配置
1.下载安装包 qt-opensource-windows-x86-msvc2013_64-5.7.0.exe VS2013_RTM_ULT_ENU.iso 插件:qt-vs-addin-msvc20 ...
- 【HDOJ 1086】 模板水过
You can Solve a Geometry Problem too Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/3 ...
- 随应潮流-基于ABP+Angulsrjs现代化应用软件开发框架(1)-总体介绍
前言 近几年一直从事电子政务和企业管理软件的外包开发工作,深感开发技术更新之快,尤其随着移动互联网的发展,前端技术发展更是一日千里. 现在随便一个项目都要求多端使用(PC+App+微信),如果没有一个 ...
- 浅析JS中的模块规范AMD和CMD
一.AMD AMD就只有一个接口:define(id?,dependencies?,factory); 它要在声明模块的时候制定所有的依赖(dep),并且还要当做形参传到factory中,像这样: d ...