我的类路径中有一个属性文件。我的要求是根据我从参数获得的一些输入来更改此文件中的某些属性。参数的性质决定了是否需要更改属性,如果需要,则更改哪些属性。问题在于所有类路径条目都在应用程序启动时加载,因此从我的应用程序内部进行更改不会产生任何影响。我该如何克服这个问题?
我可以想到的一种可能的解决方案是,不要在classpath中添加此属性文件,而是在完成修改后添加。可行吗?有什么好的解决方案?
最佳答案
此文件是否在您的类路径上都没有关系。它是一个文件:如果覆盖其内容,它将被更改。启动时没有神奇地制作出一些内存中的副本。这与加载的类和在运行时可能需要更改的类完全不同。
遵循正确格式的属性文件可以读取到java.util.Properties对象中。您可以这样做,使用对象根据需要更改属性,然后将其写回到文件中。检查该类中的store
和load
方法。请注意,如果使用带Output/InputStream
的版本,则编码是硬编码的。如果文件的编码不是ISO-8859-1,则使用具有适当Writer/Reader
的方法。