你可以使用.getResource()在可执行的jar文件中加载文本文件吗?

时间:2015-02-18 16:14:58

标签: java jar stream resources executable

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

不能工作

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

作品

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

1 个答案:

答案 0 :(得分:1)

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

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

顺便说一下,URL方法返回的getResource对象仍然是一个有效的"指针"对于资源,File实现不能使用此引用,因为它超出了他的范围。