我们知道,当jar放入classpath中时,可以通过getResourceAsStream来取到其包含的普通文件,比如a包下有个b.txt文件,调用类叫SomeClass,于是可以如下取到:
someClass.getClass().getResourceAsStream("/a/b.txt");
但是有时候这个jar不是放在classpath中的,怎么取呢?这个方法不好用了,如果想用,只有把jar通过程序动态地加入classpath中,再用上面的方法做,这个方法我好像以前试过,貌似不好用,即使好用,还是有点麻烦.不如用下面的办法最简单,比如这个jar的位置是:d/lib/my.jar,同样要取出b.txt,于是你可以如下得到其输出流,从而进行内容提取.
URL url = new URL("jar:file:/d/lib/my.jar!/a/b.txt");
url.openStream();
是不是很方便?
本文介绍了一种简便方法,通过URL路径直接获取外部Jar包内的文件内容,无需将Jar包加入到class路径中。举例展示了如何使用URL构造来实现此目的。

被折叠的 条评论
为什么被折叠?



