由于某些需要,把资源打包进了jar包。那么如何从jar包里面加载相应资源呢? 我们可以使用
ClassLoader
来加载
简单介绍
ClassLoader
是类加载器的抽象类。它可以在运行时动态的获取加载类的运行信息。//查找具有给定名称的资源,并返回资源的URL对象。资源可以是图像、声音、文本等。 public URL getResource(String name) //返回读取指定资源的输入流。 public InputStream getResourceAsStream(String name);
ClassLoader
是抽象的,无法实例化对象,需要使用.getClass()
来获取。
代码示例
-
当前 jar包结构如图:
- 获取
favicon.png
资源代码如下:public class Test { public void getResource() throws IOException{ //查找指定资源的URL,其中res.txt仍然开始的bin目录下 URL fileURL=this.getClass().getResource("/resources/favicon.png"); System.out.println(fileURL.getFile()); } }
- 源码工程
https://github.com/nICEnnnnnnnLee/FileSpliter
ps: (广告)上面那个工程就是文件分割器,可以在此基础上自己DIY,处理1GB文件大概20~50s,效果如图: