我知道您可以使用java.util.Properties来读取Java属性文件。
请参阅:Java equivalent to app.config?
这个档案有标准的位置吗?在.NET中,我们将application.exe.config放在与application.exe相同的目录中。该应用程序默认在此处查找。
可以让Java在类路径中查找属性文件,但我很难理解要使用的文件名/路径结构以及如何使用标准.properties格式或XML格式文件。
假设我在org_example_api.jar中打包了一个API(根包是org.example.api)。我不想将属性文件放在jar中,因为它应该由用户编辑。我希望用户能够将所需的配置属性放在相对于类路径的某个地方的.properties或.xml文件中,这样我就可以找到它而无需了解有关ir文件系统结构的任何信息。
这适用于所有系统:
/classpath/org_example_api.jar
/classpath/org/example/api/config.properties OR
/classpath/org/example/api/config.xml
代码:
java.util.Properties = ? //NEED SOME HELP HERE
答案 0 :(得分:2)
这完全取决于您正在开发的应用程序类型。
1)如果是Web应用程序,最好的位置是在WEB-INF / classes /文件夹中。
2)如果您正在开发独立应用程序,则有许多方法。从您的示例中我认为以下结构将起作用。
/<dist>/org_example_api.jar
/<dist>/config.xml
/<dist>/run.sh
在run.sh中,您可以在类路径中启动提供当前目录的java应用程序。这样的事情。
java -cp。:org_example_api.jar ClassToExecute
3)如果是API发行版,则由最终用户决定。您可以告诉用户他们可以在类路径中提供config.xml,该路径应遵循一些预定义的结构。在这种情况下,您可以查看Log4J作为示例。
答案 1 :(得分:1)
这里的世界对你敞开大门。唯一最好的做法是最适合你的:
config.properties
。user.home
目录,或者回退到安装应用程序的任何位置。就个人而言,我通常让我的应用程序尝试从类路径中读取属性文件 - 但我不是在最终用户更新/更改文件的世界。
无论您选择哪种方式,只需确保为用户清楚地记录,以便他们知道要编辑的文件以及需要的位置!
答案 2 :(得分:1)
您可以将属性文件放在CLASSPATH中的目录或JAR中,然后使用
InputStream is = getClass().getResourceAsStream("/path/goes/here");
Properties props = new Properties();
props.load(is);
(我注意到你在OP中提到了这一点,但其他人可能会发现代码很有用。)