Java当中解析ini文件对应到JavaBean当中
目录
- 1、ini文件简介
- 2、ini文件
- 3、ini解析工具类
- 4、示例运行结果
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;/*** 构造函数** @param filename* 文件路径* @throws IOException*/public ParseIniUtil(String filename) throws IOException {BufferedReader reader = new BufferedReader(new FileReader(filename));read(reader);reader.close();}/*** 文件读取** @param reader* @throws IOException*/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);}}/*** 解析每行数据** @param 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);}}/*** 根据节 和 key 获取值** @param section* @param key* @return String*/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;}/*** 获取节下所有key** @param section* @return Properties*/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;}/*** 增加节点 及 值** @param section*/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);}/*** 增加节点** @param section*/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当中相关推荐
- 解决ini-parser解析ini文件中文乱码问题
解决ini-parser解析ini文件中文乱码问题 参考文章: (1)解决ini-parser解析ini文件中文乱码问题 (2)https://www.cnblogs.com/nodegis/p/95 ...
- Java 实现解析xml文件的基本步骤(做笔记)
今天,初步学习了Java实现解析xml文件的基本步骤.不多说先上图解了. 源代码: public class Dome1 { public static void main(String[] args ...
- Java jdom解析xml文件带冒号的属性
Java jdom解析xml文件带冒号的属性 转载请标明出处: https://dujinyang.blog.csdn.net/article/details/99644824 本文出自:[奥特曼超人 ...
- python解析ini文件
新建一个config.ini文件 [LocalDB] ip=127.0.0.1 prot=3306 user=root passwd=123456 db=proxy python中解析ini文件的库为 ...
- vb 解析ini文件_PHP文件及运行(适合PHP初学者)
PHP文件及运行(适合PHP初学者) PHP文件可包含HTML.JavaScript代码和 PHP代码,换句话说PHP 代码可以嵌入HTML文档.PHP文件名以php为后缀. PHP代码以" ...
- Python 内置模块之 ConfigParser - 解析 ini 文件
ini配置文件是被configParser直接解析然后再加载的,如果只是修改配置文件,并不会改变已经加载的配置 INI文件结构简单描述 INI文件就是扩展名为"ini"的文件.在W ...
- java处理解析xml文件的几种方法及每种方法的区别
文章目录 了解xml xml文件的结构 **特殊处理** **CDATA** 强烈建议 处理xml文件的几种方式 认识Document对象 解析xml文档 该选择哪种方式解析 DOM解析xml文件 D ...
- java dat 解析_dat文件如何用java解析?
用javamail解析邮件(失败 xiao__jia__jia3492018-11-03 如何用java输出Excel文件 wnk123456562012-07-19 Java发送邮件Excel附件名 ...
- Java读取更新.ini文件(三)
my.ini文件: [section] name=Konan [sect] name=zhangsan Java代码: package com.accord.util;import java.io.F ...
最新文章
- 【跨域报错解决方案】Access to XMLHttpRequest at ‘http://xxx.com/xxx‘ from origin ‘null‘ has been blocked by
- BoneCP 学习笔记
- Fork/Join 框架介绍
- python序列化持久化需要注意的一个问题
- linux目录操作函数
- java date 相差_java 比较时间相差多少分钟
- 苹果cms V8 M1938蓝色自适应模板
- find -exec 批量使用方法
- 在线语音识别_腾讯云在线语音识别_在线语音识别成文字 - 云+社区 - 腾讯云
- mysql 驱动指令_Mysql的驱动包如何发送指令给MYSQL SERVER
- 必成功的Hadoop环境搭建jdk环境搭建-超详细操作
- windows10 快捷代码
- scada系统集成_SCADA和DCS的区别以及PLC系统和它们的关系
- 思科 Cisco DHCP中继配置
- 现在,让客服接管数字化企业
- win10升级助手_不用QQ也能电脑远程,win10这功能太良心了!真后悔晚发现
- 京东2017实习生Java.md
- 阿里云 CDN+Oss 解决方案
- 如何从产品层面做需求分析——产品定位
- X位的有/无符号整数