我有一个非常令人困惑的问题。 我正在尝试更改属性文件中的属性,但它只是没有更改...
以下是代码:
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
感谢任何帮助
答案 0 :(得分:2)
当您使用getResourceAsStream(
时,它会从类路径中检索文件。例如如果您的类路径中有/home/user/resources
,则可以在此处查找文件。
如果您使用new FileOutputStream("config.properties")
,则使用当前工作目录,只是因为您没有指定目录。
简而言之,它正在写入属性,而不是您正在阅读的属性。你可以写一个类路径中的那个,只要它来自一个目录,但是我建议你只写入当前工作目录或配置中提供的目录。
答案 1 :(得分:0)
我认为这是因为您正在从一个地方(即资源)读取文件,而且可能是您将文件保存在另一个地方(即当前工作目录)。