Java编写/编辑属性文件

时间:2015-12-10 19:20:17

标签: java file

我有一个非常令人困惑的问题。 我正在尝试更改属性文件中的属性,但它只是没有更改...

以下是代码:

package config;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.Properties;

    /**
     * @author Crunchify.com
     * 
     */
    public class CrunchifyGetPropertyValues {
        String result = "";
        InputStream inputStream;

        public String getPropValues() throws IOException {

            try {
                Properties prop = new Properties();
                String propFileName = "config.properties";

                inputStream = getClass().getClassLoader().getResourceAsStream(propFileName);

                if (inputStream != null) {
                    prop.load(inputStream);
                } else {
                    throw new FileNotFoundException("property file '" + propFileName + "' not found in the classpath");
                }

                Date time = new Date(System.currentTimeMillis());

                // get the property value and print it out
                String user = prop.getProperty("user");
                String company1 = prop.getProperty("company1");
                String company2 = prop.getProperty("company2");
                String company3 = prop.getProperty("company3");
                prop.setProperty("company1", "Amazon");
                prop.store(new FileOutputStream("config.properties"), null);

                // result = "Company List = " + company1 + ", " + company2 + ", " +
                // company3;
                // System.out.println(result + "\nProgram Ran on " + time + " by
                // user=" + user);
            } catch (Exception e) {
                System.out.println("Exception: " + e);
            } finally {
                inputStream.close();
            }
            return result;
        }
    }## Heading ##

我特别关注的代码是

prop.setProperty("company1", "Amazon");
prop.store(new FileOutputStream("config.properties"), null);

由于某种原因,我的属性文件不会改变...

 #Crunchify Properties
    user=Crunchify
    company1=Google
    company2=eBay
    company3=Yahoo

感谢任何帮助

2 个答案:

答案 0 :(得分:2)

当您使用getResourceAsStream(时,它会从类路径中检索文件。例如如果您的类路径中有/home/user/resources,则可以在此处查找文件。

如果您使用new FileOutputStream("config.properties"),则使用当前工作目录,只是因为您没有指定目录。

简而言之,它正在写入属性,而不是您正在阅读的属性。你可以写一个类路径中的那个,只要它来自一个目录,但是我建议你只写入当前工作目录或配置中提供的目录。

答案 1 :(得分:0)

我认为这是因为您正在从一个地方(即资源)读取文件,而且可能是您将文件保存在另一个地方(即当前工作目录)。