Java实现解析ini文件对应到JavaBean中
短信预约 -IT技能 免费直播动态提醒
1、ini文件简介
.ini 文件是Initialization File的缩写,即初始化文件,是windows的系统配置文件所采用的存储格式,统管windows的各项配置,ini文件也可以用来存放软件信息,在java开发当中有时候涉及到对接别的设备或者对接程序可能偶尔会遇到ini文件。
2、ini文件
这个是我的一个ini文件。现在想要解析这个文件,对应到javabean当中,从下面可以看出,这个ini有两个节点,也可以认为是两个java对象,一个是PATIENT,一个是REPORT。
这个是已经写好的一个工具类,可以直接复制粘贴使用的,没有依赖任何第三方jar包,在工具类最下面有一个main方法,就是用法示例。
3、ini解析工具类
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
public class ParseIniUtil {
protected Map<String,Object> sections = new HashMap<String,Object>();
private transient String defaultName = "default";
private transient String sectionName;
private transient Properties property;
private Properties parentObj;
public ParseIniUtil(String filename) throws IOException {
BufferedReader reader = new BufferedReader(new FileReader(filename));
read(reader);
reader.close();
}
protected void read(BufferedReader reader) throws IOException {
String line;
sectionName = this.defaultName;
property = new Properties();
sections.put(sectionName, property);
while ((line = reader.readLine()) != null) {
parseLine(line);
}
}
protected void parseLine(String line) {
line = line.trim();
if (line.indexOf('#') == 0 || line.indexOf(';') == 0) {
return;
}
if (line.matches("\\[.*\\]")) {
sectionName = line.replaceFirst("\\[(.*)\\]", "$1").trim();
property = new Properties();
if (sectionName.matches(".*:.*")) {
int pos = sectionName.indexOf(':');
String child = sectionName.substring(0, pos);
String parent = sectionName.substring(pos + 1);
parentObj = this.getSection(parent);
if (parentObj != null) {
property = (Properties) parentObj.clone();
sections.put(child, property);
}
} else {
sections.put(sectionName, property);
}
} else if (line.matches(".*=.*")) {
int i = line.indexOf('=');
String name = line.substring(0, i).trim();
String value = line.substring(i + 1).trim();
if (value.indexOf('"') == 0 || value.indexOf('\'') == 0) {
// 去掉前面符号 " 或 '
value = value.substring(1, value.length());
// 去掉后面 " 或 '
int len = value.length();
if (value.indexOf('"') == len - 1 || value.indexOf('\'') == len - 1) {
value = value.substring(0, len - 1);
}
}
property.setProperty(name, value);
}
}
public String get(String section, String key) {
if (section.equals(null) || section == "")
section = this.defaultName;
Properties property = (Properties) sections.get(section);
if (property == null) {
return null;
}
String value = property.getProperty(key);
if (value == null)
return null;
return value;
}
public Properties getSection(String section) {
if (section.equals(null) || section == "")
section = this.defaultName;
Properties property = (Properties) sections.get(section);
if (property == null) {
sections.put(section, property);
}
return property;
}
public void set(String section, String key, String value) {
if (property == null)
property = new Properties();
if (section.equals(null) || section == "")
section = this.defaultName;
if (key.equals(null) || key == "") {
System.out.println("key is null");
return;
}
sections.put(section, property);
property.setProperty(key, value);
}
public void setSection(String section) {
sections.put(section, property);
}
public static void main(String[] args) {
String fileName = "C:\\Users\\gxs\\Desktop\\Patient.ini";
ParseIniUtil config = null;
try {
config = new ParseIniUtil(fileName);
} catch (IOException e) {
e.printStackTrace();
}
String app = config.get("PATIENT", "OrderID");
System.out.println("OrderID = " + app);
String app1 = config.get("REPORT", "PostCode");
System.out.println("PostCode = " + app1);
}
}
4、示例运行结果
有了这个应该想要解析ini对应到javabean当中不是什么问题了吧。
以上就是Java实现解析ini文件对应到JavaBean中的详细内容,更多关于Java解析ini文件的资料请关注编程网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341