Java读取Jar包里的文件

Java的IO操做,一年也用不到一次,且每次用到都会有一堆问题。html

就Java路径,用一次查一次。由于用的少,用完就忘。java

此次遇到一个奇葩问题。原本是一个很是简单的Excel操做,读取,填充数据。本地跑没有一点问题,一打成jar包,发到服务器上,就在下面的语句报错:服务器

this.sourceFileName = this.getClass().getResource("Book1.xls").toURI()
                    .getPath();

提示 找不到文件。
那么咱们看看什么是URI:this

Web上可用的每种资源 -HTML文档、图像、视频片断、程序等 - 由一个通用资源标识符(Uniform Resource
Identifier, 简称"URI")进行定位。.net

且根据规范,URI是这种形式地:协议名称://域名.根域名/目录/文件名.后缀
http://www.baidu.com/xxoo.html
那么我么利用上面的java语句得到的是什么形式呢?
file://d:xx/xx/aa/bb.txt.
注意到没,利用这种形式,能够打开如上形式的某个目录文件下的文件。
而对于jar包里的文件,则已是文件的内部了,就已经无能为力了。
也就是若是用上面方法,能够打开到.../xx/xx.jar,而无法到.../xx/xx.jar/xx.txt了。code

那对于jar里的文件是否是就无法打开了?确定不是:orm

InputStream inputStream = this.getClass()getResourceAsStream("Book1.xls"));

就这么简单,jar包里的文件,咱们是无法以file形式读取的,而只能以InputStram的形式读取。视频

推荐几篇博文吧:
http://mushiqianmeng.blog.51cto.com/3970029/833649
http://www.coderli.com/jar-classloader
http://blog.csdn.net/b_h_l/article/details/7767829htm

相关文章
相关标签/搜索