8

我想使用 ClassLoader 加载 Properties 类的属性文件。出于讨论的目的,我简化了以下代码以删除错误处理:

loader = this.getClass().getClassLoader();
in = loader.getResourceAsStream("theta.properties");
result = new Properties();
result.load(in);

在与此类相同的目录中,我有文件“theta.properties”,但 InputStream 始终为空。我是不是把文件放错地方了?我正在使用 eclipse 及其设置将类文件构建到源文件夹 - 所以这不应该是问题。

我在 JavaDoc 中找不到任何东西来让 ClassLoader 告诉我正在搜索什么类路径。

4

3 回答 3

10

通过使用getClass().getClassloader(),您可以从根路径目录中查找“theta.properties”。只需用于getClass().getResourceAsStream()获取与该类相关的资源。

于 2009-07-07T20:56:17.253 回答
6

如果文件与类位于同一目录中,则必须将类的包作为目录作为前缀。

因此,如果您的包裹是:

package com.foo.bar;

那么你的代码是:

.getResourceAsStream("com/foo/bar/theta.properties");
于 2009-07-07T20:52:45.653 回答
-1

您可以使用资源包

于 2009-09-16T15:17:04.343 回答