如何引用不在 Jar 文件中的资源?

How to reference resources not within the Jar file?

我有一个 Java 项目使用了一些资源文件。我想将项目捆绑到一个 jar 文件中,但我仍然需要能够引用资源文件。我不希望将这些资源捆绑到 jar 中,因为最终用户需要能够对它们进行更改。

那么有没有办法让jar文件在包含jar的目录中查找资源呢?不在罐子里?

所以像下面这样,jar 文件指的是资源目录中包含的文件:

C:/MyDirectory/
   |- project.jar
   |- resources/
       |- resourceFile.txt 
String myGreatResourceLocation = "c://MyDirectory/resources/resourceFile.txt";

java.nio.file.Path myGreatResource = java.nio.file.Paths.get( myGreatResourceLocation );

因此您可以使用 java.nio.file.Files.readAllLines() 访问资源的数据,还有其他可用的方法。如果您只是为了获取字符串而阅读,readAllLines() 会很棒,因为它允许您指定字符集,这将使您免于以后的麻烦。

但是请注意,如果有人将您的 jar 文件用于 Web 应用程序,它通常无法读取您的数据(您必须检查您的 Web 或应用程序服务器的文档)