Java中把jar包内文件资源释放出来的方法

简介: Java中把jar包内文件资源释放出来的方法

有些时候我们需要读取并释放jar包内文件到jar包外。这样其实很简单,使用InputStream和OutputStream即可。

文件在jar包中时,一般是先读取他们,再输出。以我这里为例:

网络异常,图片无法展示
|

可以看到我这里的代码文件目录结构,代码文件夹根目录下有一个a.txt,还有一个test文件夹,其中有一个Test类和b.txtsda.pdf

打包为jar后结构不变,如下:

网络异常,图片无法展示
|

网络异常,图片无法展示
|

现在演示文件输出,把jar包内的test文件夹里面的那个sda.pdf输出,代码如下:

InputStreamis=Test.class.getResourceAsStream("sda.pdf");// 流式读取jar包内文件,使用classpathFilef=newFile("E:\\中转\\tio\\a\\out.pdf");// 指定输出文件Filefp=newFile(f.getParent());// 输出文件的父目录if (!fp.exists()) {// 父目录不存在时先创建fp.mkdirs();
}
if (!f.exists()) {// 文件不存在时先创建f.createNewFile();
}
OutputStreamos=newFileOutputStream(f);// 创建输出流intindex=0;// 当前读取的位数byte[] bytes=newbyte[1024];// 指定每次读取的位数,这里以1024为例// 开始读取文件,一遍读取一边输出文件。每次读取1024的长度并储存于bytes这个数组中,然后写入至目标文件while ((index=is.read(bytes)) !=-1) {
os.write(bytes, 0, index);// 输出文件,write()方法参数分别为:写入的数据、开始写入的位置(0为从开头写入),写入长度}
// 关闭流并保存文件os.flush();
os.close();
is.close();

这里要说明的重点是,InputStream is = Test.class.getResourceAsStream("sda.pdf");

这就是流式读取文件,其语法是:

InputStreamis=类名.class.getResourceAsStream("文件路径");

这里因为是读取jar内的文件,所以路径用classpath方式表示。上面的Test.class.getResourceAsStream()就是以Test这个类的位置为出发点。括号里面的参数就是在jar包中,以Test类为准的相对路径。

当然也可以使用绝对路径。文件路径以/开头的就是绝对路径,绝对路径不再是以类为出发点,/就代表jar包的根目录。

举个例子,如果要读取上述jar包内根目录下的a.txt,那就要这样写:

InputStreamis=Test.class.getResourceAsStream("/a.txt");

这时就是以绝对路径方式找到文件。虽然指定了Test.class,但是因为是绝对路径,路径就与Test类无关了。

相关文章
|
9天前
|
Java
Java中ReentrantLock中tryLock()方法加锁分析
Java中ReentrantLock中tryLock()方法加锁分析
11 0
|
1天前
|
Java
Java接口中可以定义哪些方法?
【4月更文挑战第13天】
4 0
Java接口中可以定义哪些方法?
|
7天前
|
Java Shell
Java 21颠覆传统:未命名类与实例Main方法的编码变革
Java 21颠覆传统:未命名类与实例Main方法的编码变革
10 0
|
9天前
|
Java
Java中关于ConditionObject的signal()方法的分析
Java中关于ConditionObject的signal()方法的分析
21 4
|
9天前
|
安全 Java
append在Java中是哪个类下的方法
append在Java中是哪个类下的方法
21 9
|
17天前
|
Java
Java通过反射获取类调用方法
Java通过反射获取类调用方法
18 0
|
18天前
|
Java
java中jar启动设置内存大小java -jar 设置堆栈内存大小
java中jar启动设置内存大小java -jar 设置堆栈内存大小
11 1
|
28天前
|
Java
java面向对象高级分层实例_测试类(main方法所在的类)
java面向对象高级分层实例_测试类(main方法所在的类)
9 1
|
28天前
|
Java API Maven
email api java编辑方法?一文教你学会配置步骤
在Java开发中,Email API是简化邮件功能的关键工具。本文指导如何配置和使用Email API Java:首先,在项目中添加javax.mail-api和javax.mail依赖;接着,配置SMTP服务器和端口;然后,创建邮件,设定收件人、发件人、主题和正文;最后,使用Transport.send()发送邮件。借助Email API Java,可为应用添加高效邮件功能。
|
Java
java打jar包 命令行cmd在当前路径打jar包
不尝试就永远不会知道真相。   今天搞webservice,需要将服务单独拉出来发布。打jar包的时候要打成aar包,所以用到cmd下的打jar包的命令。   当前路径打jar包,一定要先进到这个文件夹,然后对这个文件夹打jar包。
929 0