zoukankan      html  css  js  c++  java
  • 读取Jar包外面的配置文件

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shenxiandashu/article/details/79193705

    比较常用的方法是将properties文件直接打入JAR包中,然后使用Properties类进行读取。有时候也需要读取在JAR外面的配置文件。废话不多说,直接上代码:

    import java.io.BufferedInputStream;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.NoSuchElementException;
    import java.util.Properties;
    
    import org.apache.commons.io.IOUtils;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    public class CfgFileUitls {
    
        private static final Logger logger = LoggerFactory.getLogger(PropertyUtils.class);
    
        private static Properties properties;
    
        public static String getObject(String prepKey) {
            return properties.getProperty(prepKey);
        }
    
        public CfgFileUitls(String... resourcesPaths) {
            properties = loadProperties(resourcesPaths);
        }
    
        public Properties getProperties() {
            return properties;
        }
    
        /**
         * 取出Property,但以System的Property优先,取不到返回空字符串.
         */
        private String getValue(String key) {
            String systemProperty = System.getProperty(key);
            if (systemProperty != null) {
                return systemProperty;
            }
            if (properties.containsKey(key)) {
                return properties.getProperty(key);
            }
            return "";
        }
    
        /**
         * 取出String类型的Property,但以System的Property优先,如果都为Null则抛出异常.
         */
        public String getProperty(String key) {
            String value = getValue(key);
            if (value == null) {
                throw new NoSuchElementException();
            }
            return value;
        }
    
        /**
         * 取出String类型的Property,但以System的Property优先.如果都为Null则返回Default值.
         */
        public String getProperty(String key, String defaultValue) {
            String value = getValue(key);
            return value != null ? value : defaultValue;
        }
    
        /**
         * 取出Integer类型的Property,但以System的Property优先.如果都为Null或内容错误则抛出异常.
         */
        public Integer getInteger(String key) {
            String value = getValue(key);
            if (value == null) {
                throw new NoSuchElementException();
            }
            return Integer.valueOf(value);
        }
    
        /**
         * 取出Integer类型的Property,但以System的Property优先.如果都为Null则返回Default值,如果内容错误则抛出异常
         */
        public Integer getInteger(String key, Integer defaultValue) {
            String value = getValue(key);
            return value != null ? Integer.valueOf(value) : defaultValue;
        }
    
        /**
         * 取出Double类型的Property,但以System的Property优先.如果都为Null或内容错误则抛出异常.
         */
        public Double getDouble(String key) {
            String value = getValue(key);
            if (value == null) {
                throw new NoSuchElementException();
            }
            return Double.valueOf(value);
        }
    
        /**
         * 取出Double类型的Property,但以System的Property优先.如果都为Null则返回Default值,如果内容错误则抛出异常
         */
        public Double getDouble(String key, Integer defaultValue) {
            String value = getValue(key);
            return value != null ? Double.valueOf(value) : defaultValue;
        }
    
        /**
         * 取出Boolean类型的Property,但以System的Property优先.如果都为Null抛出异常,如果内容不是true/false则返回false.
         */
        public Boolean getBoolean(String key) {
            String value = getValue(key);
            if (value == null) {
                throw new NoSuchElementException();
            }
            return Boolean.valueOf(value);
        }
    
        /**
         * 取出Boolean类型的Property,但以System的Property优先.如果都为Null则返回Default值,如果内容不为true/false则返回false.
         */
        public Boolean getBoolean(String key, boolean defaultValue) {
            String value = getValue(key);
            return value != null ? Boolean.valueOf(value) : defaultValue;
        }
    
        /**
         * 载入多个文件, 文件路径使用Spring Resource格式.
         */
        private Properties loadProperties(String... resourcesPaths) {
            Properties props = new Properties();
    
            for (String location : resourcesPaths) {
    
                // logger.debug("Loading properties file from:" + location);
    
                InputStream is = null;
                try {
                    is = new BufferedInputStream(new FileInputStream(location));
                    props.load(is);
                } catch (IOException ex) {
                    logger.info("Could not load properties from path:" + location + ", " + ex.getMessage());
                } finally {
                    IOUtils.closeQuietly(is);
                }
            }
            return props;
        } 
    }
    
    					<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-778f64ae39.css" rel="stylesheet">
                </div>
  • 相关阅读:
    Android开发 使用 adb logcat 显示 Android 日志
    【嵌入式开发】向开发板中烧写Linux系统-型号S3C6410
    C语言 结构体相关 函数 指针 数组
    C语言 命令行参数 函数指针 gdb调试
    C语言 指针数组 多维数组
    Ubuntu 基础操作 基础命令 热键 man手册使用 关机 重启等命令使用
    C语言 内存分配 地址 指针 数组 参数 实例解析
    CRT 环境变量注意事项
    hadoop 输出文件 key val 分隔符
    com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: Too many connections
  • 原文地址:https://www.cnblogs.com/jpfss/p/9790201.html
Copyright © 2011-2022 走看看