当前位置:主页 > 行业资讯 > > 正文

每日热闻!Java中把jar包内文件资源释放出来的方法

时间: 2023-01-11 17:10:36 来源: 阿里云

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

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


(资料图片仅供参考)

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

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

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;复制代码

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

InputStreamis=类名.class.getResourceAsStream("文件路径");复制代码

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

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

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

InputStreamis=Test.class.getResourceAsStream("/a.txt");复制代码

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

关键词:

相关文章

每日热闻!Java中把jar包内文件资源释放出来的方法

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

来源:阿里云2023-01-11

鹰普精密:预计2022年净利润5.5亿元同增43% 产品多元化布局效果渐显

巴菲特在制造业的投资个案不多,其中最大的一笔投资是2015年伯克希尔哈撒韦公司(BerkshireHathaway)以370亿美元约20多倍市盈率全资收购了美

来源:和讯2023-01-11

中汽股份(301215)1月10日主力资金净卖出244.18万元

截至2023年1月10日收盘,中汽股份(301215)报收于5 44元,上涨2 26%,换手率4 34%,成交量11 97万手,成交额6432 51万元。

来源:证券之星2023-01-11

焦点播报:抢抓旅游市场!江苏盱眙“十城十万旅游护照”在南京首发

抢抓旅游市场!江苏盱眙“十城十万旅游护照”在南京首发

来源:中国新闻网2023-01-10

天天快播:潍坊恒信以领跑之势,见证强大产品实力

一座建筑,不仅是人们的活动空间,更是建造者对美好生活的寄予和憧憬。一座有温度的建筑,才能打磨出温暖的生活,在对建筑夜以继日的打磨完善

来源:鸢都小速2023-01-10