在哪里存储Java的.properties文件?
关于使用属性的Java教程讨论了如何使用Properties类。 在本教程中,它显示了写入名为“defaultProperties”的文件的属性。 那么什么是属性文件的好名称和位置?
我通常写两个java应用程序之一:系统实用程序或用户程序。 我认为大多数系统实用程序在/etc/myfile.properties
都有一个文件,大多数用户程序会创建一个~/.myfile.properties
。 但是,这些路径在Windows中不起作用。 是否有更通用的方法来定义这些细节以使代码平台独立?
在这种情况下,我会使用Preferences
API而不是Properties
。
Preferences
允许您存储/检索用户和系统设置,并自动为您处理持久性。 持久性是特定于平台的; 对于Windows,它使用注册表,对于Unix,它使用隐藏文件。
如果您正在讨论保留外部属性文件来配置您的应用程序,那么我建议
System.getProperty("user.home")+File.separator+ "yourappname"+File.separator+"name.properties"
如果您正在谈论放置在项目内部的属性文件,请将其保留在default package
。
要么
其他选项使用XML文件或Preference
以下是一些替代解决方案:
- 从类路径中读取属性文件
- 将路径作为应用程序的启动参数传递给属性文件
从类路径中读取它可以提供灵活性,因为您可以将其包含在jar本身中,或者在应用程序启动时指定它。
如果您将props文件捆绑为应用程序的一部分并且是只读的,则将其放在jar文件中。 如果还必须更新它,则通过file:/// url使其可用,并将文件路径作为JVM(-DfileUrl = …)参数传递。
请看这篇关于如何从类路径中的JAR读取props文件的post: 从JAR目录中读取属性文件
使用jndi是一个很好的解决方案。 运行时配置通过webserver的管理控制台。 一旦获得属性,Webapp将立即获取更改,您不必重新启动应用程序。