欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

读取jar包中的资源文件

程序员文章站 2022-04-28 09:20:52
...

方法一:

URL fileURL = this.getClass().getResource("/beauty.jpg");
byte[] bytes = File2byte(fileURL.getFile());

方法二:

InputStream is=this.getClass().getResourceAsStream("/beauty.jpg");

方法一会有路径错误的问题,因为jar包中文件URL有专用格式的:jar:!/{entry};所以我们不能以此来取文件;如果要读取必须要求集成环境和JAR包运行时资源文件放入不同的的路径。也就是说beauty.jpg在两种情况下应该放入不同的位置。
在这两条语句前
Properties p = new Properties();
URL url=this.getClass().getResource(“/”+file);
前加入:
System.out.println(this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath());
System.out.println(this.getClass().getResource(“/”));
System.out.println(this.getClass().getResource(“”));
第一个语句是打印classpath的绝对路径。根据打印的结果就应该知道资源文件就放入JAR包什么位置,在集成环境时应该放入到哪才行。
getResource方法的参数以斜杠开头表示url相对于根classpath的路径。


推荐方法二这个方法是透明的,你可以像普通的File一样去定位jar包中的资源文件(不管你是jar文件还是普通的文件夹);但是这种方法是有缺陷的,JRE会对读入的文件进行缓存,应用启动后,无法刷新


还有一个方法是使用java.util.jar.JarFile类访问,这里面包含里大多对于jar操作的方法,可以参考API应用。