我在Stackoverflow中已经阅读了至少3或4个这样的问题,但令人惊讶的是我无法弄清楚这里有什么问题。当我构建我的项目时,编译的类被移动到文件夹“/ bin”,当我尝试使用像
这样的东西时 classLoader.getResource("/files/file1.txt")
Classloader无法找到它,因为它将“path / to / projectName / bin”视为其根文件夹
classLoader.getResource(".")
以便返回
/路径/到/ PROJECTNAME / PROJECTNAME / bin中
不是
/ path / to / projectName / projectName /
因此我无法访问 / path / to / projectName / files / 文件夹。我在这里犯错了什么想法?
答案 0 :(得分:4)
除了错误阅读文档外,你没有做错任何事。 ClassLoader从类路径加载资源,因此只能从类路径中的目录和jar加载资源。
如果要从任意位置读取文件,请使用文件IO,而不是ClassLoader方法。
答案 1 :(得分:1)
如果您要加载的文件是配置等资源,您可以在类路径中添加files
文件夹并直接搜索文件
classLoader.getResource("file1.txt");
如果它只是任意文件,并且您不希望提供可移植性原因的绝对路径,您可以尝试使用File API通过提供相对路径来加载文件。
File file = new File("files/file1.txt");