public final classConfigurationFile {/*** 从ini配置文件中读取变量的值
*
*@paramfile 配置文件的路径
*@paramsection 要获取的变量所在段名称
*@paramvariable 要获取的变量名称
*@paramdefaultValue 变量名称不存在时的默认值
*@return变量的值
*@throwsIOException 抛出文件操作可能出现的io异常*/
public static String readCfgValue(String file, String section, String variable, String defaultValue) throwsIOException {
String strLine, value= "";
BufferedReader bufferedReader= new BufferedReader(newFileReader(file));boolean isInSection = false;try{while ((strLine = bufferedReader.readLine()) != null) {
strLine=strLine.trim();
strLine= strLine.split("[;]")[0];
Pattern p;
Matcher m;
p= Pattern.compile("\\[\\w+]");//Pattern.compile("file://[//s*.*//s*//]");
m =p.matcher((strLine));if(m.matches()) {
p= Pattern.compile("\\[" + section + "\\]");//Pattern.compile("file://[//s*" + section + "file://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= "";returnvalue;
}
}else if (strArray.length == 2) {
value= strArray[0].trim();if(value.equalsIgnoreCase(variable)) {
value= strArray[1].trim();returnvalue;
}
}else if (strArray.length > 2) {
value= strArray[0].trim();if(value.equalsIgnoreCase(variable)) {
value= strLine.substring(strLine.indexOf("=") + 1).trim();returnvalue;
}
}
}
}
}finally{
bufferedReader.close();
}returndefaultValue;
}/*** 修改ini配置文件中变量的值
*
*@paramfile 配置文件的路径
*@paramsection 要修改的变量所在段名称
*@paramvariable 要修改的变量名称
*@paramvalue 变量的新值
*@throwsIOException 抛出文件操作可能出现的io异常*/
public static boolean writeCfgValue(String file, String section, String variable, String value) throwsIOException {
String fileContent, allLine, strLine, newLine, remarkStr= "";
String getValue= null;
BufferedReader bufferedReader= new BufferedReader(newFileReader(file));boolean isInSection = false;boolean canAdd = true;
fileContent= "";try{while ((allLine = bufferedReader.readLine()) != null) {
allLine=allLine.trim();
strLine= allLine.split(";")[0];
Pattern p;
Matcher m;
p= Pattern.compile("\\[\\w+]");
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("=");
getValue= strArray[0].trim();if(getValue.equalsIgnoreCase(variable)) {
newLine= getValue + "=" +value;
fileContent+=newLine;while ((allLine = bufferedReader.readLine()) != null) {
fileContent+= "\r\n" +allLine;
}
bufferedReader.close();
canAdd= false;
System.out.println(fileContent);
BufferedWriter bufferedWriter= new BufferedWriter(new FileWriter(file, false));
bufferedWriter.write(fileContent);
bufferedWriter.flush();
bufferedWriter.close();return true;
}
}
fileContent+= allLine + "\r\n";
}if(canAdd) {
String str= variable + "=" +value;
fileContent+= str + "\r\n";
System.out.println(fileContent);
BufferedWriter bufferedWriter= new BufferedWriter(new FileWriter(file, false));
bufferedWriter.write(fileContent);
bufferedWriter.flush();
bufferedWriter.close();
}
}catch(IOException ex) {throwex;
}finally{
bufferedReader.close();
}return false;
}