package com.smarteye.common;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.regex.Pattern; /**
* ini文件工具类
*
* @author xuwanshu
*
*/
public class IniFileTools { /**
* 点节
*
* @author liucf
*
*/
public class Section { private String name; private Map<String, Object> values = new LinkedHashMap<String, Object>(); public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public void set(String key, Object value) {
values.put(key, value);
} public Object get(String key) {
return values.get(key);
} public Map<String, Object> getValues() {
return values;
} } /**
* 换行符
*/
private String line_separator = "\n"; /**
* 编码
*/
private String charSet = "UTF-8"; private Map<String, Section> sections = new LinkedHashMap<String, Section>(); /**
* 指定换行符
*
* @param line_separator
*/
public void setLineSeparator(String line_separator) {
this.line_separator = line_separator;
} /**
* 指定编码
*
* @param charSet
*/
public void setCharSet(String charSet) {
this.charSet = charSet;
} /**
* 设置值
*
* @param section
* 节点
* @param key
* 属性名
* @param value
* 属性值
*/
public void set(String section, String key, Object value) {
Section sectionObject = sections.get(section);
if (sectionObject == null)
sectionObject = new Section();
sectionObject.name = section;
sectionObject.set(key, value);
sections.put(section, sectionObject);
} /**
* 获取节点
*
* @param section
* 节点名称
* @return
*/
public Section get(String section) {
return sections.get(section);
} /**
* 获取值
*
* @param section
* 节点名称
* @param key
* 属性名称
* @return
*/
public Object get(String section, String key) {
return get(section, key, null);
} /**
* 获取值
*
* @param section
* 节点名称
* @param key
* 属性名称
* @param defaultValue
* 如果为空返回默认值
* @return
*/
public Object get(String section, String key, String defaultValue) {
Section sectionObject = sections.get(section);
if (sectionObject != null) {
Object value = sectionObject.get(key);
if (value == null || value.toString().trim().equals(""))
return defaultValue;
return value;
}
return null;
} /**
* 删除节点
*
* @param section
* 节点名称
*/
public void remove(String section) {
sections.remove(section);
} /**
* 删除属性
*
* @param section
* 节点名称
* @param key
* 属性名称
*/
public void remove(String section, String key) {
Section sectionObject = sections.get(section);
if (sectionObject != null)
sectionObject.getValues().remove(key);
} /**
* 当前操作的文件对像
*/
private File file = null; public IniFileTools() { } public IniFileTools(File file) {
this.file = file;
initFromFile(file);
} public IniFileTools(InputStream inputStream) {
initFromInputStream(inputStream);
} /**
* 加载一个ini文件
*
* @param file
*/
public void load(File file) {
this.file = file;
initFromFile(file);
} /**
* 加载一个输入流
*
* @param inputStream
*/
public void load(InputStream inputStream) {
initFromInputStream(inputStream);
} /**
* 写到输出流中
*
* @param outputStream
*/
public void save(OutputStream outputStream) {
BufferedWriter bufferedWriter;
try {
bufferedWriter = new BufferedWriter(new OutputStreamWriter(
outputStream, charSet));
saveConfig(bufferedWriter);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
} /**
* 保存到文件
*
* @param file
*/
public void save(File file) {
try {
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(
file));
saveConfig(bufferedWriter);
} catch (IOException e) {
e.printStackTrace();
}
} /**
* 保存到当前文件
*/
public void save() {
save(this.file);
} /**
* 从输入流初始化IniFile
*
* @param inputStream
*/
private void initFromInputStream(InputStream inputStream) {
BufferedReader bufferedReader;
try {
bufferedReader = new BufferedReader(new InputStreamReader(
inputStream, charSet));
toIniFile(bufferedReader);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
} /**
* 从文件初始化IniFile
*
* @param file
*/
private void initFromFile(File file) {
BufferedReader bufferedReader;
try {
bufferedReader = new BufferedReader(new FileReader(file));
toIniFile(bufferedReader);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
} /**
* 从BufferedReader 初始化IniFile
*
* @param bufferedReader
*/
private void toIniFile(BufferedReader bufferedReader) {
String strLine;
Section section = null;
Pattern p = Pattern.compile("^\\[.*\\]$");
try {
while ((strLine = bufferedReader.readLine()) != null) {
if (p.matcher((strLine)).matches()) {
strLine = strLine.trim();
section = new Section();
section.name = strLine.substring(1, strLine.length() - 1);
sections.put(section.name, section);
} else {
String[] keyValue = strLine.split("=");
if (keyValue.length == 2) {
section.set(keyValue[0], keyValue[1]);
}
}
}
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
} /**
* 保存Ini文件
*
* @param bufferedWriter
*/
private void saveConfig(BufferedWriter bufferedWriter) {
try {
boolean line_spe = false;
if (line_separator == null || line_separator.trim().equals(""))
line_spe = true;
for (Section section : sections.values()) {
bufferedWriter.write("[" + section.getName() + "]");
if (line_spe)
bufferedWriter.write(line_separator);
else
bufferedWriter.newLine();
for (Map.Entry<String, Object> entry : section.getValues()
.entrySet()) {
bufferedWriter.write(entry.getKey());
bufferedWriter.write("=");
bufferedWriter.write(entry.getValue().toString());
if (line_spe)
bufferedWriter.write(line_separator);
else
bufferedWriter.newLine();
}
}
bufferedWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
} }

ini操作类

package com.smarteye.common;

import java.io.File;

import com.smarteye.adapter.BVPU_ServerParam;

public class AddressManage {
public static final String ADDRESS_DIR = MPUPath.MPU_PATH_ROOT
+ "/address.ini"; /**
* 验证是否存在该文件
*
* @return
* @throws Exception
*/
public static boolean isExist() throws Exception {
try {
File f = new File(ADDRESS_DIR);
if (!f.exists()) {
return false;
}
} catch (Exception e) {
// TODO: handle exception
return false;
}
return true;
} public static void createIni(BVPU_ServerParam param) {
IniFileTools file2 = new IniFileTools();
file2.set("address", "ip", param.szServerAddr);
file2.set("address", "port", param.iServerPort);
file2.save(new File(ADDRESS_DIR));
} public static void readIni(BVPU_ServerParam param) {
IniFileTools file2 = new IniFileTools(new File(ADDRESS_DIR));
param.szServerAddr = file2.get("address", "ip").toString();
param.iServerPort = Integer.parseInt(String.valueOf(file2.get(
"address", "port")));
}
}

  

android操作ini工具类的更多相关文章

  1. (转载)实例详解Android快速开发工具类总结

    实例详解Android快速开发工具类总结 作者:LiJinlun 字体:[增加 减小] 类型:转载 时间:2016-01-24我要评论 这篇文章主要介绍了实例详解Android快速开发工具类总结的相关 ...

  2. 自己封装的poi操作Excel工具类

    自己封装的poi操作Excel工具类 在上一篇文章<使用poi读写Excel>中分享了一下poi操作Excel的简单示例,这次要分享一下我封装的一个Excel操作的工具类. 该工具类主要完 ...

  3. Redis操作Set工具类封装,Java Redis Set命令封装

    Redis操作Set工具类封装,Java Redis Set命令封装 >>>>>>>>>>>>>>>>& ...

  4. Redis操作List工具类封装,Java Redis List命令封装

    Redis操作List工具类封装,Java Redis List命令封装 >>>>>>>>>>>>>>>> ...

  5. Redis操作Hash工具类封装,Redis工具类封装

    Redis操作Hash工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>> ...

  6. Redis操作字符串工具类封装,Redis工具类封装

    Redis操作字符串工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>>& ...

  7. java中文件操作的工具类

    代码: package com.lky.pojo; import java.io.BufferedReader; import java.io.BufferedWriter; import java. ...

  8. Android 软件管理工具类Utils

    Android 软件管理工具类Utils /** * Created by uilubo on 2015/9/30. * 工具类 */ public class Utils { public stat ...

  9. Java操作Redis工具类

    依赖 jar 包 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis< ...

随机推荐

  1. Android消息推送之GCM方式(二)

    <声明> 转载请保留本来源地址: http://blog.csdn.net/wzg_1987/article/details/9148023 上一节讲了GCM方式实现前的一些必要准备工作, ...

  2. THP Transparent HugePages 相关知识与关闭

    近期遇到个LINUX系统内存比較大.未开 HugePages,业务有变化导致ORACLE连接数剧增至上千个,PageTables达到上百G.导致内存不足系统HANG住的案例. 因此须要开启 HugeP ...

  3. hdu4740【杭州网赛、模拟、有点搜索?】

    当时看了这题就感觉so easy...  本来不想写的,后来感觉是不是可以练一下搜索水平.. 比赛时有人过了就没写.       比赛完了写一下. 实现还不是那么顺利,  囧 本来自己以为这题能练下搜 ...

  4. SQL Server数据库---》增删查改

    ***数据的插入:(增) insert into 表名(字段列表) values(值列表) 如果不写字段列表就要为表添加全部的列数据 其实into也可以省略 每次只能插入一条数据 1.如果字段可以为n ...

  5. fs读取某个json文件的数据

    /** * Created by Administrator on 2016/7/12. * 流数据 */ var fs = require('fs'); var stream = fs.create ...

  6. css 中的若干心得

    css布局中定位机制主要是普通的流,也就是说按照HTML文本的顺序在窗口上从上到下.从左到右去显示,遇见块级元素就换行显示.为了更进一步的控制,我可以使用相对定位.绝对定位.固定定位以及浮动. 相对定 ...

  7. C++中联合体(union)的使用

    typedef union para { ]; struct { double a; double b; double c; double d; }NP; }NPara; //或者如下所示 union ...

  8. ?super T 和? extends T区别

    Java 泛型 关键字说明 ? 通配符类型 <? extends T> 表示类型的上界,表示参数化类型的可能是T 或是 T的子类 <? super T> 表示类型下界(Java ...

  9. codeforces 3D . Least Cost Bracket Sequence 贪心

    题目链接 给一个字符串, 由( ) 以及? 组成, 将?换成( 或者 ) 组成合法的括号序列, 每一个?换成( 或者 ) 的代价都不相同, 问你最小代价是多少, 如果不能满足输出-1. 弄一个变量nu ...

  10. OpenGL绘制环形渐变

    开始看计算机图形学和OpenGL,挺有意思就自己随便写了一些效果. 以中间点坐标为圆心,计算每一点和圆心距离,根据距离算出一个RGB值,于是整体便呈现环形分布. 代码如下: #include < ...