java读取配置文件的有效方法
我们正在开发一个Java应用程序,在运行时读取配置文件。我的问题是,以下哪种情况对于读取配置文件是有效的
Scenario #1: Retrieves a value from config by opening the file, get the value, then close the file.
这意味着每次检索一个值时,该文件都会被打开和关闭
Scenario #2: Open the file during initialization, then expose the object statically across the runtime.
文件将被打开一次,然后使用Config对象检索一个值
老实说,我们目前使用的场景是#2。我们之所以选择它,是因为配置文件只会打开一次。打开文件需要同步,这可能会导致过早检索值。此外,如果配置文件从其绝对路径移动(任何事情都有可能),场景#1可能会导致运行时错误。但在运行时修改配置值时,场景#1是有效的
那么哪一个是有效的呢
# 1 楼答案
如果我必须多次访问该文件,我可能会为每个配置创建一个带有字段的
class
,我会读取该文件一次(仅用于初始化类字段),然后关闭该文件。通过这种方式,您可以在初始化期间读取一次文件,然后通过读取类中存储的字段值来访问配置一点建议:除非绝对必要,否则尽量不要打开文件(或资源)
# 2 楼答案
我认为这两种情况都不是最好的:
正如您在sencario#1中所述,您可能有很多不必要的IO工作负载,而在#2中,您无法在运行时动态更改配置参数
我建议两者混合使用。您可以静态加载配置一次,然后定期检查是否发生了更改。如果是这样,请重新加载配置
您可以通过查看Java的ResourceBundle类来了解这一点。事实上,如果配置可以作为属性文件放在类路径中,那么您可以(ab?)将此实现用于您的目的: