Java读取和修改ini配置文件

/*

  * ConfigurationFile.java

  *

  * Created on 2009年4月15日, 下午1:36

  *

  * To change this template, choose Tools | Template Manager

  * and open the template in the editor.

  */

  import java.io.BufferedReader;

  import java.io.BufferedWriter;

  import java.io.FileReader;

  import java.io.FileWriter;

  import java.io.IOException;

  import java.util.regex.Matcher;

  import java.util.regex.Pattern;

  /**

  * 这是个配置文档操作类,用来读取和配置ini配置文档

  * @author 由月

  * @version 2004-08-18

  * @修改 2008-05-22

  */

  public final class ConfigurationFile {

  /**

  * 从ini配置文档中读取变量的值

  * @param file 配置文档的路径

  * @param section 要获取的变量所在段名称

  * @param variable 要获取的变量名称

  * @param defaultValue 变量名称不存在时的默认值

  * @return 变量的值

  * @throws IOException 抛出文档操作可能出现的io异常

  */

  public static String getProfileString(

  String file,

  String section,

  String variable,

  String defaultValue)

  throws IOException {

  String strLine, value = "";

  BufferedReader bufferedReader = new BufferedReader(new FileReader(file));

  boolean isInSection = false;

  try {

  while ((strLine = bufferedReader.readLine()) != null) {

  strLine = strLine.trim();

  //strLine = strLine.split("[;]")[0];

  Pattern p;

  Matcher m;

  p = Pattern.compile("\\["+section+"\\]");

  m = p.matcher((strLine));

  if (m.matches()) {

  p = Pattern.compile("\\["+section+"\\]");

  m = p.matcher(strLine);

  if (m.matches()) {

  isInSection = true;

  } else {

  isInSection = false;

  }

  }

  if (isInSection == true) {

  strLine = strLine.trim();

  String[] strArray = strLine.split("=");

  if (strArray.length == 1) {

  value = strArray[0].trim();

  if (value.equalsIgnoreCase(variable)) {

  value = "";

  return value;

  }

  } else if (strArray.length == 2) {

  value = strArray[0].trim();

  if (value.equalsIgnoreCase(variable)) {

  value = strArray[1].trim();

  return value;

  }

  } else if (strArray.length > 2) {

  value = strArray[0].trim();

  if (value.equalsIgnoreCase(variable)) {

  value = strLine.substring(strLine.indexOf("=") + 1).trim();

  return value;

  }

  }

  }

  }

  } finally {

  bufferedReader.close();

  }

  return defaultValue;

  }

 

 /**

  * 修改ini配置文档中变量的值

  * @param file 配置文档的路径

  * @param section 要修改的变量所在段名称

  * @param variable 要修改的变量名称

  * @param value 变量的新值

  * @throws IOException 抛出文档操作可能出现的io异常

  */

  public static boolean setProfileString(

  String file,

  String section,

  String variable,

  String value)

  throws IOException {

  String fileContent, allLine,strLine, newLine, remarkStr;

  String getValue;

  BufferedReader bufferedReader = new BufferedReader(new FileReader(file));

  boolean isInSection = false;

  fileContent = "";

  try {

  while ((allLine = bufferedReader.readLine()) != null) {

  allLine = allLine.trim();

  System.out.println("allLine == "+allLine);

  strLine = allLine;

  Pattern p;

  Matcher m;

  p = Pattern.compile("\\["+section+"\\]");

  m = p.matcher((strLine));

  //System.out.println("+++++++ ");

  if (m.matches()) {

  System.out.println("+++++++ ");

  p = Pattern.compile("\\["+section+"\\]");

  m = p.matcher(strLine);

  if (m.matches()) {

  System.out.println("true ");

  isInSection = true;

  } else {

  isInSection = false;

  System.out.println("+++++++ ");

  }

  }

  if (isInSection == true) {

  strLine = strLine.trim();

  String[] strArray = strLine.split("=");

  getValue = strArray[0].trim();

  if (getValue.equalsIgnoreCase(variable)) {

  // newLine = getValue + " = " + value + " " + remarkStr;

  newLine = getValue + " = " + value + " ";

  fileContent += newLine + "\r\n";

  while ((allLine = bufferedReader.readLine()) != null) {

  fileContent += allLine + "\r\n";

  }

  bufferedReader.close();

  BufferedWriter bufferedWriter =

  new BufferedWriter(new FileWriter(file, false));

  bufferedWriter.write(fileContent);

  bufferedWriter.flush();

  bufferedWriter.close();

  return true;

  }

  }

  fileContent += allLine + "\r\n";

  }

  }catch(IOException ex){

  throw ex;

  } finally {

  bufferedReader.close();

  }

  return false;

  }

  public static void main(String[] args) {

  //String value = Config.getProfileString("sysconfig.ini", "Option", "OracleDB", "default");

  //System.out.println(value);

  try {

  System.out.println("值已经改变!... "+ConfigurationFile.setProfileString("E:/web5/h2_test/gamewww.ini", "TestSect1", "10012", "111111"));

  System.out.println("值读取成功!... "+ConfigurationFile.getProfileString("E:/web5/h2_test/gamewww.ini", "TestSect1", "10012", ""));

  } catch (IOException e) {

  System.out.println("错误 ......"+e.toString());

  }

  }

  }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值