2010-02-07 52 views
2

我正在使用java属性文件来存储一些配置信息,对象创建我正在加载此信息,然后在对象生命周期中的某些时间点我想覆盖属性文件中的值以便下次这种类型的对象被实例化时,它被配置为当前信息。 setProperty方法似乎没有这样做,当我使用存储方法时,它只是将一个新的(更新的)文件副本附加到原始文件的末尾。有任何想法吗?通过覆盖属性文件来保存状态

感谢

+3

在你的情况下使用Preferences API ? http://java.sun.com/javase/6/docs/api/java/util/prefs/Preferences.html – SyntaxT3rr0r 2010-02-07 20:47:58

回答

5

setProperty肯定不会自动执行此操作(除非你使用自己的类型将覆盖它)。

store应该没问题 - 但我的猜测是你打开一个输出流(或作家)来追加而不是覆盖。你是否一直在打开输出流?或者也许你正在使用new FileOutputStream(path, true)这会追加?没有向我们展示任何代码,很难知道你做错了什么。

正如WizardOfOdds所说,preferences API首先可能是一个更好的主意。

+0

我保持输出流始终打开。我应该为每个覆盖创建一个新的? – Aly 2010-02-07 20:57:24

+0

@Aly:我会的。一般来说,在小型工作单元中打开/写入/关闭是一个好主意,这样大部分时间你都没有打开的文件句柄。 – 2010-02-07 21:04:36