我遇到了一个无法解决的问题。 我需要读取属性文件,但无法设置正确的路径。 java.io.File的文档说我必须从src /中设置... 它不起作用,我从当前文件做了一个路径并遇到了同样的问题。
EXCEPTION IS:FileNotFound
PropertyReader类:
public final class PropertyReader {
private Properties prop = new Properties();
private InputStream input = null;
public Properties getProperties(File file) {
try {
input = new FileInputStream(file);
// load a properties file
prop.load(input);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (null != input) {
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return prop;
}
}
使用PropertyReader的ApplicationController.class:
@RequestMapping(value = "/result", method = RequestMethod.GET)
public String resultPage(ModelMap model) {
//Getting property with key "path"
model.addAttribute("path", new PropertyReader().getProperties(file).getProperty("path"));
return "result";
如果我从C://设置路径,它可以正常工作。
非常感谢你,祝你有愉快的一天!
答案 0 :(得分:0)
尝试使用以下示例来读取属性文件。
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class App {
public static void main(String[] args) {
Properties prop = new Properties();
InputStream input = null;
try {
input = new FileInputStream("config.properties");
// load a properties file
prop.load(input);
// get the property value and print it out
System.out.println(prop.getProperty("mysqldb"));
System.out.println(prop.getProperty("dbuser"));
System.out.println(prop.getProperty("dbpassword"));
} catch (IOException ex) {
ex.printStackTrace();
} finally {
if (input != null) {
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
它还取决于您使用的框架,如SpringMVC,JSF和Struts。所有这些框架都有自己的快捷方式来访问属性文件。
答案 1 :(得分:0)
我通过使用注释@PropertySource和@Value()来解决它
例如:
//There could be any folder
@PropertySource("classpath:file.properties")
public class AnyClass {
//There could be any property
@Value("${some.property}")
private String someValue;
}