怎么更新properties文件里的key的value,而不是在文件尾部写同名key?

如题。。。

每次setProperties()都是在文件的尾部。
getProperties()也是从尾部读的。
我想把某个key的value修改了,怎么做啊?
比如说
key1=123
key2=321
key3=456

我想把key2的值改了,怎么做?
[b]问题补充:[/b]
首先谢谢2位的答案。

但是关于linpyi 的答案,好像也只是在.properties文件尾部添加了内容,并没有把本来已在文件中存在的同名键值覆盖。setLastUpdateBalanceStat(parameterValue)这个方法是你自己写的吧,你没贴内容。。。

刚才我、想了个主意,就是如果存入一组信息,就把其中一个信息作为主键一样的形式,键名就是他的值,同组的其他信息以该“键名.相应的属性名”作为键名。修改和查询的时候也就方便了。这方法好像有点笨。。。哎

楼上说的也很对
但是配置文件有时候也可以用来放一些普通的信息,当成一个小型数据库,但是要保证不会有人手动去修改

我贴一段修改配置文件的代码,就是用流重写配置文件
[code="java"]
/**
写入properties信息
* @param parameterName 配置文件属性名
* @param parameterValue 需要写入的配置文件的信息
*/
public static void writeProperties(String parameterName,
String parameterValue) throws
IOException {
Properties prop = new Properties();
try {
InputStream fis = new FileInputStream(ctxRealPath);
//从输入流中读取属性列表(键和元素对)
prop.load(fis);
//调用 Hashtable 的方法 put。使用 getProperty 方法提供并行性。
//强制要求为属性的键和值使用字符串。返回值是 Hashtable 调用 put 的结果。
OutputStream fos = new FileOutputStream(ctxRealPath);
prop.put(parameterName, parameterValue);
//以适合使用 load 方法加载到 Properties 表中的格式,
//将此 Properties 表中的属性列表(键和元素对)写入输出流
prop.store(fos, " Update '" + parameterName + "' value");
setLastUpdateBalanceStat(parameterValue);
}
catch (IOException e) {
// Print.print("ConfigInfoError","Visit "+filePath+" for updating "+parameterName+" value error");
System.err.println("
*********************");
System.err.println("\r\n write BalanceStat configuration failed,please check "+ctxRealPath+" is writer . thank you \n\n");
System.err.println("**********************");
// throw e;
}
}

调用的时候你只要传入
writeProperties(key2,123456);
[/code]

properties文件一般放只读型数据,如果数据需要修改,建议不要用properties文件存储。可以考虑存入数据库。

其实我写的东西只是一个例子,里面的方法是写入配置文件的方法,最后的一个方法
[code="java"]
setLastUpdateBalanceStat(parameterValue);

是我项目里面需要的,只是给一个静态变量赋值,没什么关系
[/code]

如果你的配置文件访问比如一天就一次,你可以在开始启动服务器的时候加载存到静态变量(可以做个单例模式保证只有一个),在指定时候再从新写入配置文件.