java ini_java读取ini格式的文件
/*** 去除ini文件中的注释,以";"或"#"开头,顺便去除UTF-8等文件的BOM头
*@paramsource
*@return
*/
private staticString removeIniComments(String source){
String result=source;if(result.contains(";")){
result= result.substring(0, result.indexOf(";"));
}if(result.contains("#")){
result= result.substring(0, result.indexOf("#"));
}returnresult.trim();
}public static MapreadIni(String filename){
Map> listResult=new HashMap<>();
Map result=newHashMap();
String globalSection= "global";
File file= newFile(filename);
BufferedReader reader=null;try{
reader=new BufferedReader(new InputStreamReader(newFileInputStream(file)));
String str= null;
String currentSection= globalSection; //处理缺省的section
List currentProperties = new ArrayList<>();boolean lineContinued = false;
String tempStr= null;//一次读入一行(非空),直到读入null为文件结束//先全部放到listResult中
while ((str = reader.readLine()) != null) {
str= removeIniComments(str).trim(); //去掉尾部的注释、去掉首尾空格
if("".equals(str)||str==null){continue;
}//如果前一行包括了连接符'\'
if(lineContinued == true){
str= tempStr +str;
}//处理行连接符'\'
if(str.endsWith("\\")){
lineContinued= true;
tempStr= str.substring(0,str.length()-1);continue;
}else{
lineContinued= false;
}//是否一个新section开始了
if(str.startsWith("[") && str.endsWith("]")){
String newSection= str.substring(1, str.length()-1).trim();//如果新section不是现在的section,则把当前section存进listResult中
if(!currentSection.equals(newSection)){
listResult.put(currentSection, currentProperties);
currentSection=newSection;//新section是否重复的section//如果是,则使用原来的list来存放properties//如果不是,则new一个List来存放properties
currentProperties=listResult.get(currentSection);if(currentProperties==null){
currentProperties= new ArrayList<>();
}
}
}else{
currentProperties.add(str);
}
}//把最后一个section存进listResult中
listResult.put(currentSection, currentProperties);
reader.close();
}catch(IOException e) {
e.printStackTrace();
}finally{if (reader != null) {try{
reader.close();
}catch(IOException e1) {
}
}
}//整理拆开name=value对,并存放到MAP中://从listResult中,看各个list中的元素是否包含等号“=”,如果包含,则拆开并放到Map中//整理后,把结果放进result中
for(String key : listResult.keySet()){
List tempList =listResult.get(key);//空section不放到结果里面
if(tempList==null||tempList.size()==0){continue;
}if(tempList.get(0).contains("=")){ //name=value对,存放在MAP里面
Map properties = new HashMap<>();for(String s : tempList){int delimiterPos = s.indexOf("=");//处理等号前后的空格
properties.put(s.substring(0,delimiterPos).trim(), s.substring(delimiterPos+1, s.length()).trim());
}
result.put(key, properties);
}else{ //只有value,则获取原来的list
result.put(key, listResult.get(key));
}
}returnresult;
}
java ini_java读取ini格式的文件相关推荐
- 【自动化测试】Python 读取 .ini 格式文件
大家应该接触过.ini格式的配置文件.配置文件就是把一些配置相关信息提取出去来进行单独管理,如果以后有变动只需改配置文件,无需修改代码.特别是后续做自动化的测试,需要拎出一部分配置信息,进行管理.比如 ...
- java读取ini_java 读取ini配置文件
package com.papapa.test; import java.io.BufferedReader; import java.io.FileReader; import java.io.IO ...
- python ini文件 遍历_【自动化测试】Python 读取 .ini 格式文件
大家应该接触过.ini格式的配置文件.配置文件就是把一些配置相关信息提取出去来进行单独管理,如果以后有变动只需改配置文件,无需修改代码.特别是后续做自动化的测试,需要拎出一部分配置信息,进行管理.比如 ...
- Java读取UTF-8格式txt文件第一行出现乱码及解决;Java读带有BOM的UTF-8文件乱码原因及解决方法(转载)...
原文地址:http://blog.csdn.net/jackpk/article/details/5702964/ Java读取UTF-8的txt文件第一行出现乱码"?"及解决 t ...
- python使用configparser读取ini格式的配置文件
python使用configparser读取ini格式的配置文件 来自Python标准库的configparser模块定义了读取和写入Microsoft Windows操作系统使用的配置文件的功能.这 ...
- ajax读取文件数据,Ajax 实现读取 properties 格式资源文件数据
Ajax 的核心是 JavaScript 对象 XmlHttpRequest.该对象在 Internet Explorer 5 中首次引入,它是一种支持异步请求的技术.简而言之,XmlHttpRequ ...
- java代码将csv格式的文件导入数据库
java代码将csv格式的文件导入数据库 最近接到了一个需求,将csv文件的内容通过java进行入库操作,在此记录一下整个完整的代码 主要逻辑 读取csv的每一个数据,对数据对应的对象赋值,将对象放入 ...
- C++读取ini格式配置文件
一.背景 ini是早些年的程序启动配置文件格式,可以在该文件里配置一些默认参数,格式为: ;引号后面为注释 [group1] name = group1 IP = 192.168.1.100 port ...
- python读取.pkl格式的文件
运行代码工具jupyter notebook 读取文件放在运行目录下 #读取.pkl格式的文件 #读取.pkl格式的文件 import pickle path='test_keys.pkl' f=op ...
最新文章
- 继承QTreeWidgetItem发生error: 'staticMetaObject' is not a member of 'QTreeWidgetItem' 错误
- ProgressDialog用法详解
- 中移动TD终端资助或只限五洋巨头
- 论文阅读|How Does Batch Normalization Help Optimization
- Mysql数据库有两种安装方法
- 现代软件工程 M1 博客要求
- 【译】Asp.Net 导出 Excel 数据的9种方案
- mysql 备份 索引_mysql-索引、导入、导出、备份、恢复
- 【转】Maven实战(八)---模块划分
- android viewpager fragment 生命周期,ViewPager中Fragment的生命周期
- python计算两字符串中的位置_从Python中的字符串中获取两个字符
- Netty实战九之单元测试
- vsftpd虚拟用户整理
- Linux----SSH远程连接服务
- SQL Server2008 附加数据库时出错
- es - elasticsearch search - missing value and unmapped fields
- 移动数据安全防护措施有哪些
- PHP WEB程序设计信息表,WEB程序设计(PHP)2020知到答案全套
- 联想Y430P换屏记
- OpenCV C++案例实战十八《抖音特效——“蓝线挑战”》
热门文章
- opencv训练样本分类器
- 关于mongodb的可视化工具:nosql manager for mongodb
- axure 图片切换图片的交互_Axure教程:首页图片轮播
- python编写交互界面查分app_Django项目中model的数据处理以及页面交互方法
- c语言子线程给主线程发信息,如何用C语言实现多线程
- execjs执行js出现window对象未定义时的解决_JS逆向 | 助力新手 , 两个JS逆向喂饭教程...
- java怎么求两组整数的或集_Java面试题(判断集合中是否有两个数的和等于某个给定整数)...
- java第七章jdbc课后简答题_java学习路线流程
- java光标_java怎么设置光标位置 java设置光标位置方法
- python判断语种_编写简单的Python程序来判断文本的语种