0

我在 Stackoverflow 中至少阅读了 3 或 4 个这样的问题,但令人惊讶的是,我无法弄清楚这里出了什么问题。当我构建我的项目时,编译的类被移动到文件夹“/bin”中,当我尝试使用类似的东西时

 classLoader.getResource("/files/file1.txt")

类加载器找不到它,因为它认为“path/to/projectName/bin”是它的根文件夹

 classLoader.getResource(".")

所以返回

/path/to/projectName/projectName/bin

不是

/path/to/projectName/projectName/

因此我无法访问/path/to/projectName/files/ folder 。有什么想法我在这里做错了吗?

4

2 回答 2

4

除了错误地阅读文档之外,您没有做错任何事情。ClassLoader 从类路径加载资源,因此只能从类路径中的目录和 jar 加载资源。

如果要从任意位置读取文件,请使用 File IO,而不是 ClassLoader 方法。

于 2013-10-31T18:53:24.033 回答
2

如果您正在加载的文件是配置等资源,您可以files在类路径中添加文件夹并直接搜索具有其名称的文件

classLoader.getResource("file1.txt");

如果它只是任意文件,并且出于可移植性原因您不想提供绝对路径,则可以尝试使用 File API 通过提供相对路径来加载文件。

File file = new File("files/file1.txt");
于 2013-10-31T18:57:42.080 回答