如何在 jar 中读取 jar 文件中的资源

做 Java 程序,在封装一些程序库的时候,通常都是打包成 jar 文件的。如果跟随 class 文件一起打包的除了 class 文件还有其它资源文件的话,我们该如何在我们一起打包的程序中读取它们呢?这里给出一种方法:

final public class ResourceLoader {
    
public static byte[] getResource(String path) {
        
JarFile jarFile = new JarFile(URLDecoder.decode(ResourceLoader.class.getProtectionDomain().getCodeSource().getLocation().getFile()));
        
JarEntry entry = jarFile.getJarEntry(path);
        
byte[] data = new byte[(int)entry.getSize()];
        
BufferedInputStream in = new BufferedInputStream(jarFile.getInputStream(entry));
        
in.read(data);
        
in.close();
        
return data;
    
}
}

这样直接用 ResourceLoader.getResource(”data/data.dat”) 就可以读取 jar 文件中 data 目录下的 data.dat 文件了。这里静态方法 getResource 的 path 参数是相对于 Jar 文件来说的相对路径。

标签: Java

« 上一篇 | 下一篇 »

只显示10条记录相关文章

发表评论

评论 (必须):