获得应用程序路径类:
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());