java读写和修改ini文件汇总

来源:互联网 发布:知乎取消赞同 编辑:程序博客网 时间:2024/04/29 21:48

java读写ini文件有多种方法,这里将介绍3种方法。

1. 使用工具类Java INI package

该工具的下载和介绍地址是:http://javaini.sourceforge.net/

下面的代码实现了把第一个section下“name”的值改成“Konan”

import java.io.File;import java.io.IOException;import org.dtools.ini.*;public class iniSample {public static void main(String[] args) {IniFile iniFile=new BasicIniFile();File file=new File("F:\\my.ini);IniFileReader rad=new IniFileReader(iniFile, file);IniFileWriter wir=new IniFileWriter(iniFile, file);try {//读取itemrad.read();IniSection iniSection=iniFile.getSection(0);IniItem iniItem=iniSection.getItem("name");String name=iniItem.getValue();       //写入修改          iniItem.setValue("Konan");iniSection.addItem(iniItem);iniFile.addSection(iniSection);wir.write();                     } catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}

2.使用工具类ini4j

ini4j的功能强大,但体积也相当大。下载网站:http://ini4j.sourceforge.net/ 下面的例子用java.utils.map来存取ini。

void sample01(Ini ini)    {        Ini.Section section = ini.get("happy");        //        // read some values        //        String age = section.get("age");        String weight = section.get("weight");        String homeDir = section.get("homeDir");        //        // .. or just use java.util.Map interface...        //        Map<String, String> map = ini.get("happy");        age = map.get("age");        weight = map.get("weight");        homeDir = map.get("homeDir");        // get all section names        Set<String> sectionNames = ini.keySet();


3. 原始方法。

不需要使用任何外部类。下面代码从其他网站上A来(我也忘了出处,sorry to原作者)

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配置文档 */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("]"); m = p.matcher((strLine)); if (m.matches()) { p = Pattern.compile("]"); 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("]"); m = p.matcher((strLine)); //System.out.println("+++++++ "); if (m.matches()) { System.out.println("+++++++ "); p = Pattern.compile("]"); 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()); } }}


 

 

1 0
原创粉丝点击