JAR包中读取资源文件

摘要:
我们经常阅读代码中的一些资源文件。这些简单的过程在单独运行时肯定不会有问题。然而,如果我们将代码打包到jar包中,即使我们将资源文件打包在一起,这些东西也不会被找到。查看以下代码:1//源代码1:23 importjava。io.*;4publicclassResource{5publicvoidgetResource()throwsIOException{6Filefile=newFile;7BufferedReaderbr=newBufferedReader;8Strings=“”;9while((s=br.readLine())!=null)10System.out.println;11}12}显然,单独运行此代码可以正确指定资源中的内容,但在将项目与资源打包为JAR包后,它无法在其他项目中正常运行,将报告FileNotFoundException。

我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等)。在单独运行的时候这些简单的处理当然不会有问题。但是,如果我们把代码打成一个jar包以后,即使将资源文件一并打包,这些东西也找不出来了。看看下面的代码:

 1 //源代码1:
 2  3 import java.io.*;
 4 public class Resource {
 5     public  void getResource() throws IOException{
 6         File file=new File("bin/resource/res.txt");
 7         BufferedReader br=new BufferedReader(new FileReader(file));
 8         String s="";
 9         while((s=br.readLine())!=null)
10             System.out.println(s);
11     }
12 }    

显然,单独运行这段代码能够正确指定资源中的内容,但是将该工程连同资源一起打包为JAR包之后,在另一个工程下使用,却不能正常运行了,会报FileNotFoundException

为解决此问题,可采用如下方法,通过Class类的getResourceAsStream()方法来获取指定资源,这种方法是如何读取jar中的资源文件的,这一点对于我们来说是透明的:

 1 //源代码3:
 2 package edu.hxraid;
 3 import java.io.*;
 4 public class Resource {
 5     public void getResource() throws IOException{
 6         //返回读取指定资源的输入流
 7         InputStream is=this.getClass().getResourceAsStream("/resource/res.txt"); 
 8         BufferedReader br=new BufferedReader(new InputStreamReader(is));
 9         String s="";
10         while((s=br.readLine())!=null)
11             System.out.println(s);
12     }
13 }

这样,将该工程打包成JAR包之后,依旧能够正常工作。

免责声明:文章转载自《JAR包中读取资源文件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Oracle PSU 简介android中Handle类的用法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

centos安装、卸载openssh

1.卸载openssh并执行rpm-qaopenssh*以检查是否已安装。...

PS如何把印章颜色加重更加清晰?

我的问题是加深这个印章上的红色,然后看起来更清晰,而不会影响最下面一行文字的颜色。步骤1:打开PS软件并创建新文档。白边的实际密封尺寸设置为5cm,分辨率设置为72像素/英寸。在本例中,图像更清晰;步骤2:在工具栏中选择椭圆工具。注意图中的红色圆圈2。确保选择图形层而不是路径。...

Git安装配置(完整版)

/usr/bin/bashcd/var/www/aunsetGIT_DIRgitpulloriginmaster为您提供了另一个权限:chmod755/var/gitdata/a。git/books/post-receivechowngit:git/var/gitdata/a在git/hooks/post-receive模式下,客户端提交代码,服务器项目可以...

windows 常用命令行操作

目录操作˃pwd打印当前工作目录,通过此关键词可以查看当前所处的路径˃cd更改目录,用于多个目录之间的切换具体输入:cd目录名cd目录名/子目录名(可通过此方式到达最底层的目录)cd~(返回home目录)cd..(返回上一级目录)cd../..(返回上两级目录)cd盘符名:(不同盘符间跳转,cd后面跟上路径则可实现精准跳转)˃mkdir创建目录具体输入:mk...

【解决方法】ModuleNotFoundError: No module named 'flask._compat'

起源最近发下很多人在我的python课程下面提问,关于安装完扩展运行程序的时候出现如下的莫名其妙的错误Traceback(mostrecentcalllast):File"manage_web.py",line2,infromapplicationimportapp,managerFile"/data/www/private_deploy/python3_y...

登陆脚本

#!' num_ count+=1其他:lock_ input(用户名)#############1##########_###!...