JAvaプロファイルのプロパティパラメータの読み取りと設定

4120 ワード

皆さんは私と同じようによくプロジェクトでプロファイルを読みます.読み取りの構成が少ないので、構造が簡単でxmlを読みたくないので、面倒です.したがって、この場合、.propertiesプロファイルを読み取ることが多く、有名なlog 4 jと同じようにプロファイルを読み取る方法があります.へへへ.
プロファイルを読み込むjavaツールクラスを自分で書きました.ある構成属性を読み取るか、ある属性の値を設定して、簡単に使えます.本当にjavaの達人は必ず必要で、利器を開発します!もうみんなの食欲をそそらないで、直接コードをつけます.ははは.
package net.maxt.httpwatch.util;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

/**
 *   Properties   ,     classpath  config.properties  。
 * @author GaoYu
 */
public class PropertiesUtil {
    //       
    private String configPath=null;
    
    /**
     *       
     */
    private Properties props=null;
    
    /**
     *       ,  sh  ,    classpath  config.properties。
     */
    public PropertiesUtil() throws IOException{
        InputStream in = PropertiesUtil.class.getClassLoader().getResourceAsStream("config.properties");
        props = new Properties();
        props.load(in);
        //    
        in.close();
    }
    
    /**
     *   key       
     * Jun 26, 2010 9:15:43 PM
     * @author GaoYu
     * @param key key 
     * @return key       
     * @throws IOException 
     */
    public String readValue(String key) throws IOException {
        return  props.getProperty(key);
    }
    
    /**
     *   properties     
     * Jun 26, 2010 9:21:01 PM
     * @author GaoYu
     * @throws FileNotFoundException         
     * @throws IOException       ,          
     * 
     */
    public Map<String,String> readAllProperties() throws FileNotFoundException,IOException  {
        //       
        Map<String,String> map=new HashMap<String,String>();
        Enumeration en = props.propertyNames();
        while (en.hasMoreElements()) {
            String key = (String) en.nextElement();
            String Property = props.getProperty(key);
            map.put(key, Property);
        }
        return map;
    }

    /**
     *     key  ,      。
     * Jun 26, 2010 9:15:43 PM
     * @author GaoYu
     * @param key key 
     * @return key       
     * @throws IOException 
     */
    public void setValue(String key,String value) throws IOException {
        Properties prop = new Properties();
        InputStream fis = new FileInputStream(this.configPath);
        //            (     )
        prop.load(fis);
        //    Hashtable     put。   getProperty        。
        //                 。     Hashtable    put    。
        OutputStream fos = new FileOutputStream(this.configPath);
        prop.setProperty(key, value);
        //       load       Properties      ,
        //    Properties        (     )     
        prop.store(fos,"last update");
        //    
        fis.close();
        fos.close();
    }
    
    public static void main(String[] args) {
        PropertiesUtil p;
        try {
            p = new PropertiesUtil();
            System.out.println(p.readAllProperties());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

コード注釈はすでにコードをはっきり説明しており、コードが簡単で、清潔で、効率的です.(本当に自分に金を貼ることができます)みんながすでに理解していることを信じて、みんながプロジェクトの中で使うことを歓迎します.アドバイスやレンガのたたきも歓迎して、私はもうヘルメットを持っていて怖くありません.ほほほ.
もう少しで忘れそうになりましたが、プログラムはsrcのconfig.propertiesファイルをプロファイルとして自動的に読み込みます.これもlog 4 jと同じでいいですね.(再び萌えを売る)プロファイルパスを変更する必要がある場合は、コードで直接修正すればいいのですが、コンストラクション関数では(一般の人は教えていません).