您可以使用 .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
实现不能使用这个引用,因为这不在他的范围之内。
我注意到在使用 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
实现不能使用这个引用,因为这不在他的范围之内。