JAVA读取配置文件

来源:互联网 发布:月光女神高改数据 编辑:程序博客网 时间:2024/04/29 06:41

/*
 * Created on 2009-6-8
 * Copyright 2009 by www.xfok.net All Rights Reserved
 *
 */

package net.xfok.common;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;

/**
 * @author YangHua
 * 转载请注明出处:http://www.xfok.net/2009/10/134504.html
 */
public class MyConfig {
    private Properties propertie;
    private FileInputStream inputFile;
    private FileOutputStream outputFile;

    /**
     * 初始化Configuration类
     */
    public MyConfig() {
        propertie = new Properties();
    }

    /**
     * 初始化Configuration类
     *
     * @param filePath
     *            要读取的配置文件的路径+名称
     */
    public MyConfig(String filePath) {
        propertie = new Properties();
        try {
            inputFile = new FileInputStream(filePath);
            propertie.load(inputFile);
            inputFile.close();
        } catch (FileNotFoundException ex) {
            System.out.println("读取属性文件--->失败!- 原因:文件路径错误或者文件不存在");
            ex.printStackTrace();
        } catch (IOException ex) {
            System.out.println("装载文件--->失败!");
            ex.printStackTrace();
        }
    }// end ReadConfigInfo(...)

    /**
     * 重载函数,得到key的值
     *
     * @param key
     *            取得其值的键
     * @return key的值
     */
    public String getValue(String key) {
        if (propertie.containsKey(key)) {
            String value = propertie.getProperty(key);// 得到某一属性的值
            return value;
        } else
            return "";
    }// end getValue(...)

    /**
     * 重载函数,得到key的值
     *
     * @param fileName
     *            properties文件的路径+文件名
     * @param key
     *            取得其值的键
     * @return key的值
     */
    public String getValue(String fileName, String key) {
        try {
            String value = "";
            inputFile = new FileInputStream(fileName);
            propertie.load(inputFile);
            inputFile.close();
            if (propertie.containsKey(key)) {
                value = propertie.getProperty(key);
                return value;
            } else
                return value;
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            return "";
        } catch (IOException e) {
            e.printStackTrace();
            return "";
        } catch (Exception ex) {
            ex.printStackTrace();
            return "";
        }
    }// end getValue(...)

    /**
     * 清除properties文件中所有的key和其值
     */
    public void clear() {
        propertie.clear();
    }// end clear();

    /**
     * 改变或添加一个key的值,当key存在于properties文件中时该key的值被value所代替, 当key不存在时,该key的值是value
     *
     * @param key
     *            要存入的键
     * @param value
     *            要存入的值
     */
    public void setValue(String key, String value) {
        propertie.setProperty(key, value);
    }// end setValue(...)

    /**
     * 将更改后的文件数据存入指定的文件中,该文件可以事先不存在。
     *
     * @param fileName
     *            文件路径+文件名称
     * @param description
     *            对该文件的描述
     */
    public void saveFile(String fileName, String description) {
        try {
            outputFile = new FileOutputStream(fileName);
            propertie.store(outputFile, description);
            outputFile.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }
    }// end saveFile(...)

    public static void main(String[] args){
        MyConfig rc = new MyConfig(".//config//config.properties");// 相对路径

        String ip = rc.getValue("ipp");// 以下读取properties文件的值
        String host = rc.getValue("host");
        String tab = rc.getValue("tab");

        System.out.println("ip = " + ip + "ip-test leng = "
                + "ip-test".length());// 以下输出properties读出的值
        System.out.println("ip's length = " + ip.length());
        System.out.println("host = " + host);
        System.out.println("tab = " + tab);

        MyConfig cf = new MyConfig();
        String ipp = cf.getValue(".//config//config.properties", "ip");
        System.out.println("ipp = " + ipp);
        cf.setValue("min", "999");
        cf.setValue("max", "1000");
        cf.saveFile(".//config//save.perperties", "test");
    }

}

转载请注明出处:http://www.xfok.net/2009/10/134504.html

原创粉丝点击