从类路径加载资源
加载打包在 JAR 中的资源(图像,文本文件,属性,KeyStore 等)非常有用。为此,我们可以使用 Class
和 ClassLoader
s。
假设我们有以下项目结构:
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.class
在 com.project
包中,与 file.txt
相同,我们根本不需要指定任何路径。
但是,我们可以使用类对象的绝对路径,如下所示:
is = Test.class.getResourceAsStream("/com/project/file.txt");