全部博文(320)
分类: Java
2010-05-10 11:48:37
我们知道编译后的Java类文件可以打包成一个jar文件随处运行。但是当我们需要使用一些资源如:一幅图像,一段音频时,就需要在jar包外带有一个资源文件夹,我们总要保证jar包和资源文件夹一起分发否则程序就不能正常运行,这给我们的发布带来一些小困难。因为我们总希望我们只分发一个jar包就可以正常的运行程序。这样我们就需要把资源文件一同打包如jar包内。那么我们要如何读取这些文件呢?
Java为我们提供了两个函数URL Class.getResource()和InputStream Class.getResourceAsStream()可以完成这一功能。
假设我们有a.jar和a.jar/a.txt和a.jar/b/b.txt和a.jar/b/c.class这样一个jar包。
在c.class中有这样一句调用,从相对路径获得a.jar/b/b.txt的URI目录。
this.getClass().getResource("b.txt");
我们也可以使用绝对路径来获得目录
this.getClass().getResource("/b/b.txt");
getResourceAsStream()的用法与getResource()相同,只不过得到的是一个输入流。
注意:使用getResource()方法获得URI的文件不能用可写方法打开,否则会出现调试时正常,打包后jar无法正常运行的情况。