目录

  • 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当中相关推荐

  1. 解决ini-parser解析ini文件中文乱码问题

    解决ini-parser解析ini文件中文乱码问题 参考文章: (1)解决ini-parser解析ini文件中文乱码问题 (2)https://www.cnblogs.com/nodegis/p/95 ...

  2. Java 实现解析xml文件的基本步骤(做笔记)

    今天,初步学习了Java实现解析xml文件的基本步骤.不多说先上图解了. 源代码: public class Dome1 { public static void main(String[] args ...

  3. Java jdom解析xml文件带冒号的属性

    Java jdom解析xml文件带冒号的属性 转载请标明出处: https://dujinyang.blog.csdn.net/article/details/99644824 本文出自:[奥特曼超人 ...

  4. python解析ini文件

    新建一个config.ini文件 [LocalDB] ip=127.0.0.1 prot=3306 user=root passwd=123456 db=proxy python中解析ini文件的库为 ...

  5. vb 解析ini文件_PHP文件及运行(适合PHP初学者)

    PHP文件及运行(适合PHP初学者) PHP文件可包含HTML.JavaScript代码和 PHP代码,换句话说PHP 代码可以嵌入HTML文档.PHP文件名以php为后缀. PHP代码以" ...

  6. Python 内置模块之 ConfigParser - 解析 ini 文件

    ini配置文件是被configParser直接解析然后再加载的,如果只是修改配置文件,并不会改变已经加载的配置 INI文件结构简单描述 INI文件就是扩展名为"ini"的文件.在W ...

  7. java处理解析xml文件的几种方法及每种方法的区别

    文章目录 了解xml xml文件的结构 **特殊处理** **CDATA** 强烈建议 处理xml文件的几种方式 认识Document对象 解析xml文档 该选择哪种方式解析 DOM解析xml文件 D ...

  8. java dat 解析_dat文件如何用java解析?

    用javamail解析邮件(失败 xiao__jia__jia3492018-11-03 如何用java输出Excel文件 wnk123456562012-07-19 Java发送邮件Excel附件名 ...

  9. Java读取更新.ini文件(三)

    my.ini文件: [section] name=Konan [sect] name=zhangsan Java代码: package com.accord.util;import java.io.F ...

最新文章

  1. 【跨域报错解决方案】Access to XMLHttpRequest at ‘http://xxx.com/xxx‘ from origin ‘null‘ has been blocked by
  2. BoneCP 学习笔记
  3. Fork/Join 框架介绍
  4. python序列化持久化需要注意的一个问题
  5. linux目录操作函数
  6. java date 相差_java 比较时间相差多少分钟
  7. 苹果cms V8 M1938蓝色自适应模板
  8. find -exec 批量使用方法
  9. 在线语音识别_腾讯云在线语音识别_在线语音识别成文字 - 云+社区 - 腾讯云
  10. mysql 驱动指令_Mysql的驱动包如何发送指令给MYSQL SERVER
  11. 必成功的Hadoop环境搭建jdk环境搭建-超详细操作
  12. windows10 快捷代码
  13. scada系统集成_SCADA和DCS的区别以及PLC系统和它们的关系
  14. 思科 Cisco DHCP中继配置
  15. 现在,让客服接管数字化企业
  16. win10升级助手_不用QQ也能电脑远程,win10这功能太良心了!真后悔晚发现
  17. 京东2017实习生Java.md
  18. 阿里云 CDN+Oss 解决方案
  19. 如何从产品层面做需求分析——产品定位
  20. X位的有/无符号整数

热门文章

  1. 前端基础HTML、CSS--6(CSS-3)
  2. c++纯递归算法求等差数列
  3. android系统息屏设置_Android亮屏和熄屏控制
  4. 国内首个隐私计算盛会闭幕,区块链与隐私碰撞,数据流动价值未来可期
  5. grep 跨行搜索(匹配)
  6. bsc是指什么_什么是BSC
  7. 美国50个州最值钱的Startup都是些什么公司?
  8. 第一章 C++ 计算机语言
  9. 菜鸟的草缸 篇二:开缸种草篇
  10. 扫描图像自动校正的实现