您可以使用 .getResource() 将文本文件加载到可执行 jar 文件中吗?

Can you use .getResource() to load a text file in an executable jar file?

我注意到在使用 class 加载程序时从可执行 jar 文件加载文本文件时 .getResource() 方法不起作用(即使它适用于 ImageIcon 实例)。但是,.getResourceAsStream() 方法非常适合文本文件。为什么是这样?一般来说,使用哪种程序更好,为什么?谢谢!

不起作用

File f = new File(this.getClass().getClassLoader().getResource().toString());

有效

InputStream input = new InputStreamReader(this.getClass().getClass.Loader().getResourceAsStream());

第一种方法不起作用的原因不在 getResource() 方法中...它不起作用,因为 File 无法引用 jar 文件中的文件。 请记住 File 是一个旨在与文件系统通信的对象,但它不能查看 jar 文件(即 zip 文件)。

另一方面,getResourceAsStream() 打开一个 InputStream 资源,让您有机会直接访问其字节内容。

顺便说一下 getResource 方法返回的 URL 对象对资源来说仍然是一个有效的 "pointer" ,它是 File 实现不能使用这个引用,因为这不在他的范围之内。