Java配置文件分段读取工具类
时间: 2023-06-10 19:06:45 浏览: 43
以下是一个Java配置文件分段读取的工具类,可以将配置文件按照section分段读取,每个section中的键值对以Map的形式存储:
```java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class ConfigParser {
private String filename;
private Map<String, Map<String, String>> sections;
public ConfigParser(String filename) throws IOException {
this.filename = filename;
this.sections = new HashMap<>();
parse();
}
public String get(String section, String option) {
Map<String, String> options = sections.get(section);
if (options != null) {
return options.get(option);
}
return null;
}
public void set(String section, String option, String value) {
Map<String, String> options = sections.computeIfAbsent(section, k -> new HashMap<>());
options.put(option, value);
}
private void parse() throws IOException {
try (BufferedReader br = new BufferedReader(new FileReader(filename))) {
String line;
String section = null;
Map<String, String> options = new HashMap<>();
while ((line = br.readLine()) != null) {
line = line.trim();
if (line.matches("\\[.*\\]")) {
if (section != null) {
sections.put(section, options);
}
section = line.substring(1, line.length() - 1);
options = new HashMap<>();
} else if (line.matches(".*=.*")) {
String[] parts = line.split("=", 2);
String option = parts[0].trim();
String value = parts[1].trim();
options.put(option, value);
}
}
if (section != null) {
sections.put(section, options);
}
}
}
}
```
使用示例:
```java
public static void main(String[] args) throws IOException {
ConfigParser config = new ConfigParser("config.ini");
String value = config.get("section1", "option1");
System.out.println(value);
config.set("section2", "option2", "value2");
// ...
}
```
其中,`config.ini`配置文件的格式如下:
```
[section1]
option1 = value1
option2 = value2
[section2]
option3 = value3
option4 = value4
```