从类路径加载资源

加载打包在 JAR 中的资源(图像,文本文件,属性,KeyStore 等)非常有用。为此,我们可以使用 ClassClassLoaders。

假设我们有以下项目结构:

program.jar
|
\-com
  \-project
    |
    |-file.txt
    \-Test.class  

我们想从 Test 类访问 file.txt 的内容。我们可以通过询问类加载器来实现:

InputStream is = Test.class.getClassLoader().getResourceAsStream("com/project/file.txt");

通过使用类加载器,我们需要指定资源的完全限定路径(每个包)。

或者,我们可以直接询问 Test 类对象

InputStream is = Test.class.getResourceAsStream("file.txt");

使用类对象,路径相对于类本身。我们的 Test.classcom.project 包中,与 file.txt 相同,我们根本不需要指定任何路径。

但是,我们可以使用类对象的绝对路径,如下所示:

 is = Test.class.getResourceAsStream("/com/project/file.txt");