文档章节

用Java读取带section的INI文件

zchuanzhao
 zchuanzhao
发布于 2015/09/29 23:12
字数 242
阅读 290
收藏 0

最终是通过Properties来实现的,比直接字符流来读取多了很多便利. 可以直接定位到域,根据键就能拿到值.而不是遍历判断来取值

package com.evideostb.billsystem.properties;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Properties;

public class IniReader {
protected static HashMap<String, Properties> sections = new HashMap<String, Properties>();
private transient String currentSecion;
private transient Properties current;
private static final String iniPath = "C:/StartVOD.ini";

public IniReader() throws IOException {
BufferedReader reader = new BufferedReader(new FileReader(iniPath));
read(reader);
reader.close();
}

protected void read(BufferedReader reader) throws IOException {
String line;
while ((line = reader.readLine()) != null) {
parseLine(line);
}
}

protected void parseLine(String line) {
line = line.trim();
if (line.matches("\\[.*\\]")) {
currentSecion = line.replaceFirst("\\[(.*)\\]", "$1");
current = new Properties();
sections.put(currentSecion, current);
} else if (line.matches(".*=.*")) {
if (current != null) {
int i = line.indexOf('=');
String name = line.substring(0, i);
String value = line.substring(i + 1);
current.setProperty(name, value);
}
}
}

public String getValue(String section, String name) {
Properties p = (Properties) sections.get(section);
if (p == null) {
return null;
}

String value = p.getProperty(name);
return value;
}

public static void main(String[] args) {
IniReader IniReader = null;
try {
IniReader = new IniReader();
} catch (IOException e) {
e.printStackTrace();
}
String DbName = IniReader.getValue("BILL_ET DB", "Db Name");
System.out.println(DbName);
}

}

ini文件如下:

[BILL_ET DB]
Db Name=CZCTO
pchDbName=CZCTO-PCSDF\SQLEXPRESS
Server IP=127.0.0.1
Usr Name=sa
Password=123456
WriteFormFuncID=0


© 著作权归作者所有

共有 人打赏支持
zchuanzhao

zchuanzhao

粉丝 50
博文 243
码字总数 145493
作品 1
福州
程序员
私信 提问
多个平台的 Java Launcher 脚本

通常对于服务来说,过长的命令往往让人感到厌烦,人们需要的只是简单的操作,并且能够支持复杂的功能,对于 Java 开发的服务来说更是如此。 一个比较复杂的 Jar 服务使用Java启动,命令如下 ...

Force武装卫队
2015/06/09
0
8
Java中使用ini格式配置文件

版权声明:本文为博主原创文章,未经博主允许不得转载。 马哥私房菜的github地址 https://github.com/mageSFC/myblog https://blog.csdn.net/mmh19891113/article/details/82079977 ini格式配...

马哥私房菜
2018/08/26
0
0
Java 读取 INI 配置文件的方法

INI 配置文件是 Windows 以前非常喜欢使用的一种配置文件格式,形如: [GLOBAL] path = c:\appdata [JDBC] driver = com.mysql.jdbc.Driver url = jdbc:mysql://localhost:3306/oschina use......

红薯
2010/06/21
8.3K
7
Commons Configuration使用入门

项目开发过程中不免有许多在运行过程中需要经常改动的参数,比如说数据库的连接参数等。把这些需要经常改动的参数保存在配置文件中,让用户可以修改,这样既增强了项目的适应能力,也减少了我...

红薯
2009/05/12
3.2K
1
Midao JDBC 0.9.5 发布,JDBC 工具包

Midao JDBC 0.9.5 增加四个新的输入处理器允许直接通过参数进行配置,一个非常强大的处理器允许加载和执行查询,支持从外部 XML 文件读取并处理配置参数等. Midao JDBC 简化了 JDBC 的开发,...

oschina
2013/10/23
1K
7

没有更多内容

加载失败,请刷新页面

加载更多

总结:volatile关键字

实现内存可见性原理: 对volatile变量执行写操作时,会在写操作之后加入一条store指令,将CPU缓存数据强制刷新到主内存中 对volatile变量执行读操作的时候,会在读操作前加入一条load指令,重...

浮躁的码农
35分钟前
0
0
OSChina 周六乱弹 —— 看见这花臂了么?赶紧叫大佬!

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享周华健的单曲《有没有一首歌会让你想起我》 《有没有一首歌会让你想起我》- 周华健 手机党少年们想听歌,请使劲儿戳(这里) ...

小小编辑
今天
137
4
Confluence 6 升级中的一些常见问题

升级的时候遇到了问题了吗? 如果你想尝试重新进行升级的话,你需要首先重新恢复老的备份。不要尝试再次对 Confluence 进行升级或者在升级失败后重新启动老的 Confluence。 在升级过程中的一...

honeymoose
今天
2
0
C++随笔(四)Nuget打包

首先把自己编译好的包全部准备到一个文件夹 像这样 接下来新建一个文本文档,后缀名叫.nuspec 填写内容 <?xml version="1.0"?><package xmlns="http://schemas.microsoft.com/packaging/201......

Pulsar-V
今天
3
0
再谈使用开源软件搭建数据分析平台

三年前,我写了这篇博客使用开源软件快速搭建数据分析平台, 当时收到了许多的反馈,有50个点赞和300+的收藏。到现在我还能收到一些关于dataplay2的问题。在过去的三年,开源社区和新技术的发...

naughty
今天
24
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部