java读取ini文件

IniReader.java内容

 

package filemanager;

 

import java.io.BufferedReader;    
import java.io.FileInputStream;    
import java.io.IOException;    
import java.io.InputStreamReader;    
import java.util.HashMap;    
import java.util.Properties;    
    
/**  
 * @author James Fancy  
 * @modifyed by brmrk  
 */    
public class IniReader {    
    
    protected HashMap sections = new HashMap();    
    private transient String currentSecion;    
    private transient Properties current;    
    
    public IniReader(String filename) throws IOException {    
        //modifyed by brmrk    
        BufferedReader reader = new BufferedReader(new InputStreamReader(    
                new FileInputStream(filename), "GB2312"));    
        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("]")) {    
            //commented by brmrk    
            //          if (current != null) {    
            //              sections.put(currentSecion, current);    
              
            //          }    
    
            currentSecion = line.replaceFirst("//[(.*)//]", "$1");    
                
            // JDK 低于 1.4 时    
            // currentSecion = 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);    
            //added by brmrk    
            sections.put(currentSecion, current);    
        }    
    }    
    
    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;    
    }    
    
}   

 

使用方法:

IniReader iniReader = new IniReader(strFileName);
String strTmp = iniReader.getValue("Section1", "Key1");

你可能感兴趣的:(java读取ini文件)