Java_读取INI配置文件
需要导入的包(Copy Code)
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文件信息(Copy Code)
/** * 从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信息(Copy Code)
/** * 修改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 + "\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; }
主方法测试
INI文件内容:
[Settings]
SampSize =8
[Settings2]
ID=4
;name=zhang
主方法测试(Copy Code)
public static void main (String [] args) { // 设置 try { System.out.println(ConfigurationFile.setProfileString("d:/1.ini" , "Settings" , "SampSize" , "111")); } catch (IOException e) { System.out.println(e.toString()); } // 读取 String value = null; String value2=null; try { value = ConfigurationFile.getProfileString("d:/1.ini" , "Settings" , "SampSize" , "default"); value2 = ConfigurationFile.getProfileString("d:/1.ini" , "Settings2" , "ID" , "default"); } catch (IOException e1) { e1.printStackTrace(); } System.out.println(value + " " + value2); }
说明
1.代码为由月编写,访问原文:用JAVA读取INI配置文件,访问ta的CSDN博客:CSDN博客
2.INI文件格式见【主方法测试】下的INI文件内容,其中【分号】的意思是注释该行,如果读取该字段,将会返回你设置的默认值,即找不到相应的Key。
3.段名称区分大小写,变量名(Key)不区分大小写
4.么有了~
转载请注明本文链接。版权所有©2010 李佳龙专栏,保留所有权利。