我注意到.getResource()方法在使用类加载器时从可执行jar文件加载文本文件时不起作用(即使它适用于ImageIcon实例)。但是,.getResourceAsStream()方法适用于文本文件。为什么是这样?一般来说,哪种手术更好用,为什么?谢谢!
不能工作
File f = new File(this.getClass().getClassLoader().getResource().toString());
作品
InputStream input = new InputStreamReader(this.getClass().getClass.Loader().getResourceAsStream());
答案 0 :(得分:1)
第一种方法不起作用的原因不在getResource()
方法中......它不起作用,因为File
无法引用文件在jar文件中。
请记住File
是一个旨在与文件系统通信的对象,但它无法查看jar文件(即zip文件)。
另一方面,getResourceAsStream()
打开资源的InputStream
,让您有机会直接访问其字节内容。
顺便说一下,URL
方法返回的getResource
对象仍然是一个有效的"指针"对于资源,File
实现不能使用此引用,因为它超出了他的范围。