Java读取ini文件(带sections)

    技术2022-06-27  82

    最近公司要写个工具,本着让工具更具有灵活性,能够适应以后需求的变更,思量着传统的properties配置文件已经不能满足要求,因此改用ini配置文件,以下是我从网上找的例子写的一个类,仅供参考。

    package test; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.HashMap; import java.util.Properties; public class JavaIniProcess { protected HashMap sections = new HashMap(); private transient String currentSection; private transient Properties current; public void IniReader(String filename) throws IOException { BufferedReader reader = new BufferedReader(new FileReader(filename)); read(reader); reader.close(); } protected void read(BufferedReader reader) throws IOException { String line; while((line = reader.readLine()) != null) { parseLine(line); } } protected void parseLine(String line) { line = line.trim(); if(line.matches("//[.*//]")) { currentSection = line.replaceFirst("//[(.*)//]", "$1"); current = new Properties(); sections.put(currentSection, current); } else if(line.matches(".*=.*")) { if(current != null) { int i = line.indexOf('='); String name = line.substring(0,i); String value = line.substring(i + 1); current.setProperty(name, value); } } } public String getValue(String secion ,String name) { Properties p = (Properties)sections.get(secion); if(p == null) { return null; } String value = p.getProperty(name); return value; } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub JavaIniProcess test = new JavaIniProcess(); try { String basedir = System.getProperty("user.dir"); test.IniReader(basedir + "//" + "test.ini"); System.out.println(test.getValue("CONFIG1", "name")); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }

    test.ini内容如下:

    [CONFIG1] name=test1 age=10 [CONFIG2] name=test2 age=11 [CONFIG3] name=test3 age=12


    最新回复(0)