如果属性文件在类路径中,但是当我将属性文件放在相关的包中,那么以下代码可以正常工作,那么它根本就不会读取它。
这是我的java代码:
private String readPropVal(String propertyValue, String fileName)throws Exception{
String path="";
URL myURL = CategoriesMethods.class.getClassLoader().getResource(fileName);
InputStream in = myURL.openStream();
ClassLoader classLoader = getClass().getClassLoader();
Properties p = new Properties();
p.load(new InputStreamReader(classLoader.getResourceAsStream(fileName), "UTF-8"));
path = p.getProperty(propertyValue);
return path;
}//
我想以下行用于从类路径中读取属性文件:
URL myURL = CategoriesMethods.class.getClassLoader().getResource(fileName);
如何使用类路径以外的路径?
答案 0 :(得分:0)
对您的代码进行一些修改以使其正常工作。看来你不需要使用classLoader,而是使用类本身。
此外,我的代码现在有一个参数 clazz ,这是该文件相对后看的类 - 这样代码更通用,我认为这是件好事。
private String readPropVal(String property, String fileName, Class<?> clazz) {
String value = "";
URL myURL = clazz.getResource(fileName);
if (myURL == null) {
fileName = clazz.getResource(".").toString() + fileName;
throw new IllegalArgumentException(fileName + " does not exist.");
}
Properties p = new Properties();
try {
p.load(new InputStreamReader(myURL.openStream(), "UTF-8"));
} catch (Exception e) {
throw new IllegalStateException("problem reading file", e);
}
value = p.getProperty(property);
if (value == null) {
throw new IllegalArgumentException("Key \"" + property + "\" not found in " + myURL.toString());
}
return value;
}
现在可以像这样调用此方法:
readPropVal("propertyName", "fileName.properties", AnyClassNextToTheFile.class)
fileName.properties 文件应包含
之类的行propertyName = someValue
答案 1 :(得分:0)
我改变了我的代码,如下所示,它完美地运作
private String readPropVal(String propertyValue,String fileName)抛出异常{
String path="";
File propFile = new File(fileName);
Properties properties = new Properties();
properties.load(new InputStreamReader(new FileInputStream(propFile),"UTF-8"));
path = properties.getProperty(propertyValue);
return path;
}//