用java读写ini配置文件的原因以及实现

热心观众m

热心观众m

2016-02-19 13:45

有了下面这个用java读写ini配置文件的原因以及实现教程,不懂用java读写ini配置文件的原因以及实现的也能装懂了,赶紧get起来装逼一下吧!
在Java中,配置文件一般主要是两种形式:XML文件或者property文件。但大部分人都习惯使用ini文件,而且ini文件的分节以及注释功能,比起xml,也是易懂易用的。
  
  在vc中类库中有读写ini文件的标准函数。在dephi或其他语言中,也可以用windows的api函数来读写ini文件。但在java中似乎没有现成的类和方法可供使用。虽然java可以通过加载dll文件的方法来调用windows的api,但总觉得不够正宗。
  
  于是自己写了个读写ini配置文件的类,供大家参考。
  
  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
  */
  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("[s*.*s*]");
  m = p.matcher((strLine));
  if (m.matches()) {
  p = Pattern.compile("[s*" + section + "s*]");
  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();
  if (allLine.split("[;]").length 1)
  remarkStr = ";" + allLine.split(";")[1];
  else
  remarkStr = "";
  strLine = allLine.split(";")[0];
  Pattern p;
  Matcher m;
  p = Pattern.compile("[s*.*s*]");
  m = p.matcher((strLine));
  if (m.matches()) {
  p = Pattern.compile("[s*" + section + "s*]");
  m = p.matcher(strLine);
  if (m.matches()) {
  isInSection = true;
  } else {
  isInSection = false;
  }
  }
  if (isInSection == true) {
  strLine = strLine.trim();
  String[] strArray = strLine.split("=");
  getValue = strArray[0].trim();
  if (getValue.equalsIgnoreCase(variable)) {
  newLine = getValue + " = " + value + " " + remarkStr;
  fileContent += newLine + "";
  while ((allLine = bufferedReader.readLine()) != null) {
  fileContent += allLine + "";
  }
  bufferedReader.close();
  BufferedWriter bufferedWriter =
  new BufferedWriter(new FileWriter(file, false));
  bufferedWriter.write(fileContent);
  bufferedWriter.flush();
  bufferedWriter.close();
  
  return true;
  }
  }
  fileContent += allLine + "";
  }
  }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("d:/1.ini", "Settings", "SampSize", "111"));
  } catch (IOException e) {
  System.out.println(e.toString());
  }
  }
  }
展开更多 50%)
分享

猜你喜欢

用java读写ini配置文件的原因以及实现

编程语言 网络编程
用java读写ini配置文件的原因以及实现

用ASP读INI配置文件的函数

ASP
用ASP读INI配置文件的函数

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

INI文件的读写

编程语言 网络编程
INI文件的读写

Mysql my.ini 配置文件详解

编程语言 网络编程
Mysql my.ini 配置文件详解

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

java读取配置文件例子

编程语言 网络编程
java读取配置文件例子

vc里读取配置文件(ini)的问题

编程语言 网络编程
vc里读取配置文件(ini)的问题

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

CUP显示占用率高的缘由大解析

CUP显示占用率高的缘由大解析

javascript 验证日期的函数

javascript 验证日期的函数
下拉加载更多内容 ↓