创建后无法读取属性文件

时间:2014-01-22 10:47:42

标签: java

我正在创建一个属性文件并放入我的classpath文件夹Resources。 当我试图读取此文件时,我没有得到预期的结果。我得到打印先前值的结果而不是现在设置的属性值。 我的班级文件如下:

public class App {
  public static void main(String[] args) {

    Properties prop = new Properties();
    PrintWriter output = null;

    try {

        output = new PrintWriter("Resources/config.properties");

        // set the properties value
        prop.setProperty("database", "localhost");
        prop.setProperty("dbuser", "mkyong");
        prop.setProperty("dbpassword", "password");

        // save properties to project root folder
        prop.store(output, null);
        if(output!=null) {
            System.out.println("Output");

            output.close();

        }

    } catch (IOException io) {
        io.printStackTrace();
    } finally {
        if (output != null) {

                output.close();

        }

    }

    Properties prop1 = new Properties();
    BufferedInputStream input = null;

    try {

        String filename = "config.properties";
        input =  (BufferedInputStream) AppCPLoad.class.getClassLoader().getResourceAsStream(filename);
        if(input==null){
                System.out.println("Sorry, unable to find " + filename);
            return;
        }

        //load a properties file from class path, inside static method

        prop1.load(input);

            //get the property value and print it out
            System.out.println(prop1.getProperty("database"));
            System.out.println(prop1.getProperty("dbuser"));
            System.out.println(prop1.getProperty("dbpassword"));
            if(input!=null) {
                System.out.println("Input");
                input.close();
            }
    } catch (IOException ex) {
        ex.printStackTrace();
    } finally{
        if(input!=null){
            try {
            input.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        }
    }
  }
}

请帮忙。

1 个答案:

答案 0 :(得分:0)

运行程序时,将加载属性文件并读取值。重写属性文件后,这并不意味着您已经加载的属性已经被重写。 您需要重新加载属性文件并重新读取值。您正在寻找像ReloadableResourceBundleMessageSource

这样的实现