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