将这两个类粘贴到项目中:
获得应用程序路径类:
package com.rayoo.util;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLDecoder;
import org.apache.log4j.Logger;
public class FileTool {
private static Logger logger = Logger.getLogger("com.auib.util.FileTool");
public static String getAppPath(){
//获得应用程序路径
URL appUrl = FileTool.class.getClassLoader().getResource("");
String appPath = appUrl.getPath();
if (WINDOWS && appPath.startsWith("/"))
appPath = appPath.substring(1);
try {
appPath = URLDecoder.decode(appPath, "UTF-8");
}
catch (UnsupportedEncodingException e) { }
return appPath;
}
private static final boolean WINDOWS = System.getProperty("os.name").startsWith("Windows");
}
读取配置文件单例类:
package com.rayoo.util;
import java.io.File;
import java.io.FileInputStream;
import java.util.Properties;
/**
* 读取属性文件的配置参数
*/
public class ServerConfig {
//private static Logger logger = Logger.getLogger("product run.trns.core.parse.NodeParser");
// 属性配置
private static Properties log = null;
// 单例模式
private static ServerConfig config = null;
// 判断当前系统环境
private static final boolean WINDOWS = System.getProperty("os.name").startsWith("Windows");
// 私有构造
private ServerConfig(){ }
// 单例模式初始化
public static ServerConfig getInstance(){
if(config == null){
config = new ServerConfig();
init();
}
return config;
}
// 初始化函数
private static void init(){
if (log == null){
String configfile = null;
if(WINDOWS)
configfile = "server-config-w.properties";
else
configfile = "server-config-l.properties";
String appPath = FileTool.getAppPath();
File file = new File(appPath);
appPath = file.getParent();
String configPath = appPath;
appPath= appPath + File.separator + configfile;
file = new File(appPath);
FileInputStream fis = null;
try{
if (!file.exists()){
System.out.println("配置文件不存在");
System.exit(-1);
}
fis = new FileInputStream(file);
log = new Properties();
log.load(fis);
log.setProperty("ConfigPath", configPath);
fis.close();
}
catch(Exception e){
//logger.error("config::init::cann't load log file" + e.getMessage());
System.exit(-1);
}
}
}
public Properties getWorkInfo(){
return log;
}
public String getProperty(String key){
return log.getProperty(key);
}
/*
public synchronized void writeLog(String key, String value) throws Exception{
setProperty(key, value);
try{
save();
}
catch(Exception e){
throw new Exception(e.getMessage());
}
}
*/
/*
private void setProperty(String key, String value){
log.setProperty(key, value);
}
private void save() throws Exception{
FileOutputStream fos = null;
try{
fos = new FileOutputStream(file);
log.store(fos, "");
fos.close();
}
catch(Exception e){
throw new Exception(e.getMessage());
}
}
*/
}
将windows和linux配置文件放到WEB-INF目录下:
windows环境文件:
server-config-w.properties
linux环境配置文件:
server-config-l.properties
获取属性值的代码:
String value = ServerConfig.getInstance().getProperty("key");
或:只要配置的属性文件在类路径下,则可通过如下代码获取:
String configFile = "server-config.properties";
InputStream is = JdbcUtilSingleton.class.getClassLoader().getResourceAsStream(configFile);
Properties props = new Properties();
props.load(is);
获得属性文件的绝对路径:
File iniFile = new File(Holiday.class.getClassLoader().getResource("holiday.properties").getPath());