使用java系统属性user.dir读取配置文件

适用于windows和linux服务器读取配置文件

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;

import org.apache.log4j.Logger;

public final class PropertyUtil {
private static Logger LOG = Logger.getLogger(PropertyUtil.class);

// 配置文件
private static Properties demoProps = new Properties();
// 单例模式
private static PropertyUtil instance = null;

private PropertyUtil() {
    // user.dir为应用目录
    String filePath = System.getProperty("user.dir") + File.separator
            + "WEB-INF" + File.separator + "classes" + File.separator
            + "resources" + File.separator;
    LOG.info(filePath);
    try {
        File demoFile = new File(filePath + "demo.properties");

        if (httpFile.exists()) {
            demoProps.load(new FileInputStream(filePath
                    + "demo.properties"));
        }

    } catch (IOException e) {
        LOG.info("The Exception occured.", e);
    }
}

public synchronized static PropertyUtil getInstance() {
    if (null == instance) {
        instance = new PropertyUtil();
    }

    return instance;
}

/**
 * 获取参数值
 *
 * @param key
 *            properites的key值
 * @param defValue
 *            默认值
 * @return
 */
public String getValues(String key, String defValue) {
    String rtValue = null;

    if (null == key) {
        LOG.error("key is null");
    } else {
        rtValue = getPropertiesValue(key);
    }

    if (null == rtValue) {
        LOG.warn("PropertyUtil.getValues return null, key is " + key);
        rtValue = defValue;
    }

    LOG.info("PropertyUtil.getValues: key is " + key + "; Value is "
            + rtValue);

    return rtValue;
}

/**
 * 根据key值获取server.properties的值
 *
 * @param key
 * @return
 */
private String getPropertiesValue(String key) {
    String rtValue = demoProps.getProperty(key);

    return rtValue;
}

}

原文地址:http://blog.51cto.com/jtech/2154081

时间: 2024-10-10 04:31:26

使用java系统属性user.dir读取配置文件的相关文章

java web路径和spring读取配置文件

此篇博客缘起:部署java web系统到阿里云服务器(ubuntu14.04)的时候,有以下两个问题 找不到自定义的property配置文件 上传图片的时候找不到路径 开发的时候是在windows上的,运行正常,部署的时候就出问题了,肯定是windows和linux路径区别导致的(一个小问题来回鼓捣了几个小时,因为有自己对windows下和linux下的区别还不是特别了解,还有就是每次在windows下修改完成以后都要重新上传到阿里云,项目较大来回也需要较多时间...),遂决定好好看看java

JAVA系统属性之user home

我们可以通过System.getProperty("user.home")读取JAVA系统的user.home属性的值. System.getProperty("user.home")方法先去读取注册表中HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders下的Desktop键值做为user.dir,再取它的上一级目录做为user.home 打开注册表编辑器

设置java系统属性的最佳实践是什么,-D或System.setProperty()?(What is best practice for setting java system properties, -D or System.setProperty()?)

I need to set the codebase for the RMI application I'm working on at the moment and have done this successfully using first try{ ResourceBundle config = ResourceBundle.getBundle("myApp"); String codeBaseUrl = config.getString("codeBaseUrl&q

springboot读取系统级环境变量,和读写系统属性以及unittest来获取环境变量的方法

环境变量的读取以及系统属性的设置 环境变量只能读取,不能修改,系统属性可以修改 系统变量的读取方式: System.getEnv() 系统属性有多重读取和修改方式: 其修改方式为: 读取系统属性: @Autowired AbstractEnvironment environment; System.setProperty("today","tuesday"); environment.getProperty("test"); 增加新的系统属性:

Android 系统属性SystemProperty分析

http://www.cnblogs.com/bastard/archive/2012/10/11/2720314.html Android System Property 一 System Property 代码中大量存在:SystemProperties.set()/SystemProperties.get():通过这两个接口可以对系统的属性进行读取/设置, 顾名思义系统属性,肯定对整个系统全局共享.通常程序的执行以进程为单位各自相互独立,如何实现全局共享呢? System Properti

Confluence 6 识别系统属性

Confluence 支持一些可以从 Java 系统属性中配置的配置参数和调试(debugging )设置.系统属性通常是使用 -D 为参数选项,这个选项是 Confluence 在运行后设置到 JVM 虚拟机中的.请参考:Configuring System Properties 页面中的内容来获得更多的信息. 开始版本 默认值 模块... 作用和影响 atlassian.forceSchemaUpdate 1.0 false atlassian-config 在默认的情况下,Confluen

用Thread.currentThread().getContextClassLoader().getResourceAsStream读取配置文件

Java 用的路径分为相对路径和绝对路径: 具体又分为四种: 1.URI形式的绝对资源路径 如:file:/D:/java/eclipse/workspace/j/bin/a URI包括URL和URN两个类别,URL是URI的子集,所以URL一定是URI,而URI不一定是URL URL是URI的特例(一个标准的URL必须包括:protocol.host.port.path.parameter.anchor) URL的前缀/协议,必须是Java熟悉的.URL可以打开资源,而URI则不行.URL和U

java File_encoding属性

今天给客户发版本,突然发现报表导出内容为空,大小0字节.感到非常奇怪,因为开发的时候都好好的,打包出来怎么会出现异常. 细看才后发现是 file_encoding这个java系统属性编码方式设置导致的. 开发的时候一般我们都在eclipse中把项目的 text file  encoding 这个属性设置为utf-8. 如图: 开发完,脱离eclipse之后我们同样需要指定该编码方式去执行java程序, 否则 当你输出System.getProperty("file.encoding")

依据不同的操作系统读取配置文件/java读取属性文件代码

package cn.com.css.common.util; /** * @brief OSEnum.java 操作系统的枚举 * @attention * @author 涂作权 * @date 2014年4月3日 * @note begin modify by null */ public enum EOSPlatForm { Any("any"), Linux("Linux"), Mac_OS("Mac OS"), Mac_OS_X(&q