Java 通过覆盖属性文件保存状态
我使用java属性文件来存储一些配置信息,在创建对象时我加载这些信息,然后在对象生命周期的某些点上,我希望覆盖属性文件中的值,以便下次实例化这种类型的对象时,使用当前信息对其进行配置。setProperty方法似乎没有这样做,当我使用store方法时,它只是在原始文件的末尾附加一个新的(升级的)文件副本。有什么想法吗Java 通过覆盖属性文件保存状态,java,properties,Java,Properties,我使用java属性文件来存储一些配置信息,在创建对象时我加载这些信息,然后在对象生命周期的某些点上,我希望覆盖属性文件中的值,以便下次实例化这种类型的对象时,使用当前信息对其进行配置。setProperty方法似乎没有这样做,当我使用store方法时,它只是在原始文件的末尾附加一个新的(升级的)文件副本。有什么想法吗 谢谢setProperty当然不会自动执行此操作(除非您使用自己的类型覆盖它) store应该可以,但我猜您正在打开一个输出流(或writer)以进行追加而不是覆盖。您是否一直保持
谢谢
setProperty
当然不会自动执行此操作(除非您使用自己的类型覆盖它)
store
应该可以,但我猜您正在打开一个输出流(或writer)以进行追加而不是覆盖。您是否一直保持输出流打开?或者您可能正在使用newfileoutputstream(path,true)
哪个将附加?如果不向我们展示任何代码,就很难知道您做错了什么
正如WizardOfOdds所说,首先,将对象序列化可能是一个更好的主意。为什么不尝试序列化对象并在需要时保存它们呢。 使用可序列化对象,您可以随时保存对象的状态。下一次当你想加载它时,你可以从文件中读取它并用这个值初始化对象。。。 查看此网站:
在您的情况下,使用Preferences API不是更容易吗?我一直保持输出流打开。我应该为每次覆盖创建一个新的吗?@Aly:我会的。一般来说,在一个小的工作单元中打开/写入/关闭是一个好主意,这样在大多数情况下您就不会有一个打开的文件句柄。