实做:Java Web 项目中读取配置文件

Java Web 应用时,可能会遇到要上传文件的情况,文件存放路径是需要根据具体的部署环境配置的。一般的做法是,把路径写到一个配置文件里,再由程序读取。具体实现如下。

图示源码中相关文件的位置,被抹上淡黄色背景的就是相关文件,后面附上它们的代码。

app.confpath.upload=/home/iridium/temp/upload/original

path.temp=/home/iridium/temp/upload/original/temp
path.extract=/home/iridium/temp/upload/extract

AppConfiguration.javapackage org.iridium.search.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URISyntaxException;
import java.util.Properties;
public class AppConfiguration {
    private static String CONFIG_FILE_LOCATION = "app.conf";
//    private static Configuration configuration = new Configuration();
    public static final Properties prop = new Properties(); 
    static {
        try {
            String path = AppConfiguration.class.getClassLoader().getResource("").toURI().getPath();
            FileInputStream fis = new FileInputStream(new File(path + File.separator + CONFIG_FILE_LOCATION));
            prop.load(fis);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }  
    }
}

注:以上代码块中加粗的那句非常关键,直接关系到配置文件能不能找到。它用到了 Class.getClassLoader 这个方法。

StConstants.java

package org.iridium.search.util;
public class StConstants {
    public static String UPLOAD_PATH = AppConfiguration.prop.getProperty("path.upload"); // 用于存放上传文件的目录
    public static String TEMP_PATH = AppConfiguration.prop.getProperty("path.temp");
    public static String EXTRACT_PATH = AppConfiguration.prop.getProperty("path.extract");
}

其他文件中如果要用到,直接使用 StConstants 中的常量即可。

参考

Java web项目中读取配置文件 (by haotw) http://haotw.iteye.com/blog/963425