java读取ini文件
ini工具类;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set; public class IniReader
{
// section item value
private static Map<String, HashMap<String, String>> sectionsMap = new HashMap<String, HashMap<String, String>>(); // item value
private static HashMap<String, String> itemsMap = new HashMap<String, String>(); private static String currentSection = ""; /**
* Load data from target file
* @param file target file. It should be in ini format
*/
private static void loadData(File file)
{
BufferedReader reader = null;
try
{ reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
String line = null;
while ((line = reader.readLine()) != null)
{
line = line.trim();
if ("".equals(line))
continue;
if (line.startsWith("[") && line.endsWith("]"))
{
// Ends last section
if (itemsMap.size() > 0 && !"".equals(currentSection.trim()))
{
sectionsMap.put(currentSection, itemsMap);
}
currentSection = "";
itemsMap = null; // Start new section initial
currentSection = line.substring(1, line.length() - 1);
itemsMap = new HashMap<String, String>();
}
else
{
int index = line.indexOf("=");
if (index != -1)
{
String key = line.substring(0, index);
String value = line.substring(index + 1, line.length());
itemsMap.put(key, value);
}
}
// System.out.println(line);
}
reader.close();
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
if (reader != null)
{
try
{
reader.close();
}
catch (IOException e1)
{
e1.printStackTrace();
}
}
}
} public static String getValue(String section, String item, File file)
{
loadData(file); HashMap<String, String> map = sectionsMap.get(section);
if (map == null)
{
return "No such section:" + section;
}
String value = map.get(item);
if (value == null)
{
return "No such item:" + item;
}
return value;
} public static String getValue(String section, String item, String fileName)
{
File file = new File(fileName);
return getValue(section, item, file);
} public static List<String> getSectionNames(File file)
{
List<String> list = new ArrayList<String>();
loadData(file);
Set<String> key = sectionsMap.keySet();
for (Iterator<String> it = key.iterator(); it.hasNext();)
{
list.add(it.next());
}
return list;
} public static Map<String, String> getItemsBySectionName(String section, File file)
{
loadData(file);
return sectionsMap.get(section);
}
}
具体使用:
* 文 件 名: TestReadIni.java
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.List; /**
* <读取ini文件中的内容>
* <把源文件从GBK转成UTF-8>
*/
public class TestReadIni
{
public static void main(String[] args)
{
String srcFileName = "D:\\shMap.ini";
String destFileName = "D:\\test.ini"; try
{
transferFile(srcFileName, destFileName);
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} File file = new File(destFileName); List<String> se = IniReader.getSectionNames(file);
String distance = ""; // 离基站的距离
for (int i = 0; i < se.size(); i++)
{
distance = IniReader.getValue(se.get(i), "POSITION", file);
System.out.println("distance: " + distance);
}
} private static void transferFile(String srcFileName, String destFileName)
throws IOException
{
String line_separator = System.getProperty("line.separator");
FileInputStream fis = new FileInputStream(srcFileName);
StringBuffer content = new StringBuffer();
DataInputStream in = new DataInputStream(fis);
BufferedReader d = new BufferedReader(new InputStreamReader(in, "GBK"));
String line = null;
while ((line = d.readLine()) != null)
content.append(line + line_separator);
d.close();
in.close();
fis.close(); Writer ow = new OutputStreamWriter(new FileOutputStream(destFileName), "utf-8");
ow.write(content.toString());
ow.close();
}
}
java读取ini文件的更多相关文章
- java 读取ini文件
1.情景:需要将硬代码写到文件中,这样以后改动只需改动灵活 1)txt文件,需要将这code字符串读到代码中,保存成数组 2)导包:pom.xml添加依赖: <dependency> &l ...
- Java读取Unicode文件(UTF-8等)时碰到的BOM首字符问题,及处理方法
转载:https://blog.csdn.net/clementad/article/details/47168573 2015-18-01修改:增加 apache commons io 处理方法. ...
- Java读取Unicode文件(UTF-8等)时碰到的BOM首字符问题
在Windows下用文本编辑器创建的文本文件,如果选择以UTF-8等Unicode格式保存,会在文件头(第一个字符)加入一个BOM标识. 这个标识在Java读取文件的时候,不会被去掉,而且Stri ...
- java分享第十六天( java读取properties文件的几种方法&java配置文件持久化:static块的作用)
java读取properties文件的几种方法一.项目中经常会需要读取配置文件(properties文件),因此读取方法总结如下: 1.通过java.util.Properties读取Propert ...
- C#读取ini文件的方法
最近项目用到ini文件,读取ini文件,方法如下: using System; using System.Collections.Generic; using System.Linq; using S ...
- Java读取Excel文件的几种方法
Java读取 Excel 文件的常用开源免费方法有以下几种: 1. JDBC-ODBC Excel Driver 2. jxl.jar 3. jcom.jar 4. poi.jar 简单介绍: 百度文 ...
- Java读取txt文件
package com.loongtao.general.crawler.slave.utils; import java.io.BufferedReader; import java.io.File ...
- java 读取XML文件作为配置文件
首先,贴上自己的实例: XML文件:NewFile.xml(该文件与src目录同级) <?xml version="1.0" encoding="UTF-8&quo ...
- java 读取TXT文件的方法
java读取txt文件内容.可以作如下理解: 首先获得一个文件句柄.File file = new File(); file即为文件句柄.两人之间连通电话网络了.接下来可以开始打电话了. 通过这条线路 ...
随机推荐
- python 创建虚拟环境:bat实现一键
1.New a python project 2.cd %project.home%切换到项目根目录3.运行setup.bat创建venv虚拟环境 (注意内网运行setup.bat需要手动将requi ...
- 【代码学习】PYHTON 元组
Python的元组与列表类似,不同之处在于元组的元素不能修改.也可进行分片 和 连接操作. 元组使用小括号,列表使用方括号. 一.访问元组 #coding=utf-8 Tuple = ('name', ...
- 吴裕雄--天生自然Numpy库学习笔记:NumPy 数组属性
NumPy 数组的维数称为秩(rank),秩就是轴的数量,即数组的维度,一维数组的秩为 1,二维数组的秩为 2,以此类推. 在 NumPy中,每一个线性的数组称为是一个轴(axis),也就是维度(di ...
- java 关于多层的异常捕获
从这两个源程序可以看出来,这里的逻辑其实很好理清楚. 可以看到,每次抛出了相同的错误,但因为catch后的捕捉类型不同,所以结果不同,其实可以看出多层的异常捕捉和正常的多层代码运行逻辑是基本一致的.
- MySQL数据库备份还原
本文以CentOS 7 yum安装的MariaDB-server5.5为例,说明MySQL的几种 备份还原方式 将服务器A(192.168.1.100)上的数据库备份,还原到B(192.168.1.2 ...
- iOS 开发之 FMDB 源码分析
概念: FMDB 是用于数据存储的框架,它是 iOS 平台下对 SQLite 数据库的封装.FMDB 是面向对象的,它以 OC 的方式封装了 SQLite 的 C 语言 API,使用起来更加方便. C ...
- 【译】高级T-SQL进阶系列 (二)【下篇】:使用 APPLY操作符
[译注:此文为翻译,由于本人水平所限,疏漏在所难免,欢迎探讨指正] 原文链接:传送门. 使用OUTER APPLY 操作符 OUTER APPLY操作符工作起来和CROSS APPLY比较类似.唯一的 ...
- 【网摘自CSDN网站】当文本内容过多,展开更多 (css控制,)
<div class="more"><p class="btn">显示全部内容</p></div> .more ...
- Python开发:变量类型
1.变量赋值 #!/usr/bin/python # -*- coding: UTF-8 -*- counter = 100 # 赋值整型变量 miles = 1000.0 # 浮点型 name = ...
- DataTable和实体类之间的转换
using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.R ...