/* * @(#) IniReader.java * Created on 2004-10-14 * Created by James Fancy */ import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.HashMap; import java.util.Properties; /** * @author James Fancy */ public class IniReader { protected HashMap sections = new HashMap(); private transient String currentSecion; private transient Properties current; public 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("//[.*//]")) { // 如果是 JDK 1.4(不含1.4)以下版本,修改为 // if (line.startsWith("[") && line.endsWith("]")) { if (current != null) { sections.put(currentSecion, current); } currentSecion = line.replaceFirst("//[(.*)//]", "$1"); // JDK 低于 1.4 时 // currentSection = line.substring(1, line.length() - 1); current = new Properties(); } else if (line.matches(".*=.*")) { // JDK 低于 1.4 时 // } else if (line.indexOf('=') >= 0) { int i = line.indexOf('='); String name = line.substring(0, i); String value = line.substring(i + 1); current.setProperty(name, value); } } public String getValue(String section, String name) { Properties p = (Properties) sections.get(section); if (p == null) { return null; } String value = p.getProperty(name); return value; } } 示例: public static void main(String[] args) throws IOException { IniReader reader = new IniReader("E://james//win.ini"); System.out.println(reader.getValue("MCI Extensions.BAK", "asf")); }