如何设置属性文件的正确路径?

时间:2016-07-28 10:07:15

标签: java web-applications path properties-file

我遇到了一个无法解决的问题。 我需要读取属性文件,但无法设置正确的路径。 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://设置路径,它可以正常工作。

Project structure

非常感谢你,祝你有愉快的一天!

2 个答案:

答案 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; }