一个java操作ini格式文件的工具类,支持增删查改,不过由于项目所需,只做了针对单行的操作。写得不好求指教。
来源:互联网 发布:淘宝二级域名有啥用 编辑:程序博客网 时间:2024/05/16 17:48
package com.other;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileOutputStream;import java.io.FileReader;import java.io.IOException;import java.io.OutputStreamWriter;import java.util.HashMap;import java.util.Properties;import com.TouchLife.touchlife.Manager.Global;/** * INI文件操作类。增删查改 * @author ckw * 2014年6月26日 */public class ReadIni {private static HashMap<String, Properties> iniInfo = new HashMap<String, Properties>();private static String currentSecion;private static Properties properties;public static final String fileUrl = Global.RootPath+"BaseConfig.ini"; //配置文件的路径public ReadIni(){try {File file = new File(fileUrl);if (file.exists()) {BufferedReader reader = new BufferedReader(new FileReader(fileUrl));read(reader);} else {file.getParentFile().mkdirs();// getParentFile()返回File类型的父路径,mkdirs()创建所有的路径file.createNewFile(); // 创建了文件}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}protected void read(BufferedReader reader) throws IOException {String line;while ((line = reader.readLine()) != null) {parseLine(line);}reader.close();}/** * 读取每一行 * @param line */private void parseLine(String line) {line = line.trim();if (line.matches("\\[.*\\]") == true) {currentSecion = line.replaceFirst("\\[(.*)\\]", "$1");properties = new Properties();iniInfo.put(currentSecion, properties);} else if (line.matches(".*=.*") == true) {if (properties != null) {int i = line.indexOf('=');String key = line.substring(0, i);String value = line.substring(i + 1);properties.setProperty(key, value);}}}/** * 根据节、键名获取值 * @param section节名 * @param key键名 * @return */public String getValue(String section, String key) {Properties p = (Properties) iniInfo.get(section);if (p == null) {return null;}String value = p.getProperty(key);return value;}/*** 新增一行。新增之前判断是否存在,如果存在就修改值。若不存在则新增。* * @param section* 要修改的变量所在段名称* @param variable* 要修改的变量名称* @param value* 变量的新值*/public void setValue(String section,String variable, String value){if(getValue(section, variable) == null){try {addValue(section, variable, value);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}else if(getValue(section,variable).equals("")){try {updateValue(section, variable, value);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}else{System.out.println("已存在");return;}}public static boolean addValue(String section,String variable, String value) throws IOException {String fileContent, line, newLine;BufferedReader bufferedReader = new BufferedReader(new FileReader(fileUrl));fileContent = "";try {while ((line = bufferedReader.readLine()) != null) {line = line.trim();if (line.matches("\\[.*\\]") == true) {if(line.replaceFirst("\\[(.*)\\]", "$1").equals(section)){newLine = line+"\r\n"+variable + "=" + value;fileContent += newLine +"\r\n";while ((line = bufferedReader.readLine()) != null) {fileContent += line + "\r\n";}//定义编码 OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(fileUrl,false), "UTF-8"); BufferedWriter bufferedWriter = new BufferedWriter(write);bufferedWriter.write(fileContent);bufferedWriter.flush();bufferedWriter.close();System.out.println("插入成功");return true;//continue;}else{fileContent += line + "\r\n";continue;}}fileContent += line + "\r\n";}} catch (IOException ex) {throw ex;} finally {bufferedReader.close();}return false;}/*** 修改ini配置文件中变量的值* * @param section* 要修改的变量所在段名称* @param variable* 要修改的变量名称* @param value* 变量的新值* @throws IOException* 抛出文件操作可能出现的io异常*/public static boolean updateValue(String section,String variable, String value) throws IOException {String fileContent, line, newLine;BufferedReader bufferedReader = new BufferedReader(new FileReader(fileUrl));fileContent = "";try {while ((line = bufferedReader.readLine()) != null) {line = line.trim();if (line.matches(".*=.*") == true) {int i = line.indexOf('=');String key = line.substring(0, i);if(key.equals(variable)){newLine = key + "=" + value;fileContent += newLine + "\r\n";while ((line = bufferedReader.readLine()) != null) {fileContent += line + "\r\n";}bufferedReader.close();OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(fileUrl,false), "UTF-8"); BufferedWriter bufferedWriter = new BufferedWriter(write);bufferedWriter.write(fileContent);bufferedWriter.flush();bufferedWriter.close();System.out.println("修改成功");return true;}}fileContent += line + "\r\n";}} catch (IOException ex) {throw ex;} finally {bufferedReader.close();}return false;}/** * 删除指定行 * @param section 要删除的变量所在段名称 * @param variable要删除的变量名称 * @return * @throws IOException */public static boolean deleteKey(String section,String variable) throws IOException{String fileContent, line, newLine;BufferedReader bufferedReader = new BufferedReader(new FileReader(fileUrl));fileContent = "";try {while ((line = bufferedReader.readLine()) != null) {line = line.trim();if (line.matches(".*=.*") == true) {int i = line.indexOf('=');String key = line.substring(0, i);if(key.equals(variable)){newLine = "";fileContent += newLine;while ((line = bufferedReader.readLine()) != null) {fileContent += line + "\r\n";}bufferedReader.close();OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(fileUrl,false), "UTF-8"); BufferedWriter bufferedWriter = new BufferedWriter(write);bufferedWriter.write(fileContent);bufferedWriter.flush();bufferedWriter.close();System.out.println("删除 成功");return true;}}fileContent += line + "\r\n";}} catch (IOException e) {throw e;} finally {bufferedReader.close();}return false;}/** * 插入所有内容 * @param fileUrl 配置文件的路径 * @param allInfo所有信息 * @return */public static boolean addAllValue(String allInfo){try{OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(fileUrl,false), "UTF-8"); BufferedWriter bufferedWriter = new BufferedWriter(write);bufferedWriter.write(allInfo);bufferedWriter.flush();bufferedWriter.close();return true;}catch(Exception e){e.printStackTrace();return false;}}}
0 0
- 一个java操作ini格式文件的工具类,支持增删查改,不过由于项目所需,只做了针对单行的操作。写得不好求指教。
- 对Properties文件的增删改查操作工具类
- java操作mysql的增删改查
- java操作mysql的增删改查
- java操作mysql的增删改查
- Hbase 的java 增删改查操作
- SqlHelper工具类封装了对数据库的增删改查操作
- HDFS只支持文件append操作, 而依赖HDFS的HBase如何完成增删改查功能
- HDFS只支持文件append操作, 而依赖HDFS的HBase如何完成增删改查功能
- 从配置文件读取数据连接信息,利用泛型和java反射机制,写一个公共的增删改查数据库操作类
- Java without entity 实现在一个 control中写一个增删改查4个方法,而适用于整个项目的没有业务的所有增删改查。
- Java JDBC实现数据库的增删改查操作
- java操作mongodb:基本的增删改查
- 基于Java对象的数据库增删改查操作
- java 操作mongodb的增删查改 crud
- 简易的java操作数据库进行增删改查
- 自学java之hibernate操作数据库的增删查改
- Java实现对cookie的操作(增删改查)
- 二叉树的非递归中序遍历以及层序遍历实现
- CC++初学者编程教程(2) Microsoft Visual C++ 6.0开发环境搭建
- 利用事件同步,互斥线程
- sql 2005 用户 sa 登录失败一系列问题
- 进程与端口映射
- 一个java操作ini格式文件的工具类,支持增删查改,不过由于项目所需,只做了针对单行的操作。写得不好求指教。
- 追肮恐乩斩疑叵慷镜菊呈苍谘霖涎
- 解决Android与服务器交互大容量数据问题
- listview 保存滑动的位置。
- 捣耙附禾桶举鸵憾谟偕痘韧姓纤然
- php中获取中文首字母程序代码
- 2014-6-27-js-正则-匹配获取url参数
- 常用源代码搜索引擎
- 用Linux守护进程检测某个程序是否运行(然后重新运行)