/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ambimmort.util;

import com.ambimmort.Listener.FileListenerAdaptor;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.io.filefilter.FileFilterUtils;
import org.apache.commons.io.monitor.FileAlterationListenerAdaptor;
import org.apache.commons.io.monitor.FileAlterationMonitor;
import org.apache.commons.io.monitor.FileAlterationObserver;

//读取配置文件(属性文件)的工具类
public class ConfigManager {

    private static ConfigManager configManager;
    //properties.load(InputStream);读取属性文件
    private static Properties properties;
    //设置动态读取的文件路径
    private static String configPath = "E:/Documents/NetBeansProjects/ConfigManager/conf";
    //设置动态读取的文件名
    private static String pathName = "/configuration.properties";

    InputStream in = null;

    static {
        try {
            // 构造观察类主要提供要观察的文件或目录,当然还有详细信息的filter
            FileAlterationObserver observer = new FileAlterationObserver(
                    new File(configPath), null, null);
            // 构造收听类
            FileListenerAdaptor listener = new FileListenerAdaptor();
            // 为观察对象添加收听对象
            observer.addListener(listener);
            // 配置Monitor,第一个参数单位是毫秒,是监听的间隔;第二个参数就是绑定我们之前的观察对象。
            FileAlterationMonitor fileMonitor = new FileAlterationMonitor(
                    1000, new FileAlterationObserver[]{observer});

            // 启动开始监听
            fileMonitor.start();

        } catch (Exception ex) {
            Logger.getLogger(FileListenerAdaptor.class
                    .getName()).log(Level.SEVERE, null, ex);
        }
    }

    public ConfigManager() {
//        String configFile = "/opt/soft/apache-tomcat-8.0.12/webapps/gn/conf/configuration.properties";
        String configFile = configPath + pathName;
        properties = new Properties();

        try {
            System.out.println(configPath + pathName);
            in = new FileInputStream(configFile);
            properties.load(in);
            in.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            if (in != null) {
                try {
                    in.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    public static ConfigManager getInstance() {
        if (configManager == null) {
            configManager = new ConfigManager();
        }
        return configManager;
    }

    public String getString(String key) {
        return properties.getProperty(key);
    }

    public int getInt(String key) {
        return Integer.parseInt(properties.getProperty(key));
    }

    public static void main(String[] args) {
        String ip = ConfigManager.getInstance().getString("ip");
        int prot = ConfigManager.getInstance().getInt("port");
        System.out.println("ip:" + ip + "\tport:" + prot);
    }
}
最近下载更多
lbcanjelling  LV3 2019年3月27日
云想衣裳花想容  LV1 2019年3月22日
滑小稽稽  LV7 2018年9月25日
imagine  LV1 2018年9月19日
双城1234  LV1 2018年9月7日
zhoujian0319  LV1 2017年12月19日
回音哥  LV13 2017年12月11日
xiechang0122  LV5 2017年11月23日
wytongchun  LV1 2017年11月2日
chinafjfzlj  LV31 2017年10月11日
最近浏览更多
可行可乐369 9月27日
暂无贡献等级
451804671 2023年3月23日
暂无贡献等级
tomcat_test  LV2 2022年7月6日
aqin_qin  LV1 2022年6月20日
Sarkin  LV4 2022年4月30日
coderyx  LV2 2021年10月26日
月亮0920 2021年3月15日
暂无贡献等级
a314178817  LV1 2021年2月9日
yuexin111  LV6 2021年1月22日
北方的驻风者  LV5 2020年12月7日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友