我们知道,当jar放入classpath中时,可以通过getResourceAsStream来取到其包含的普通文件,比如a包下有个b.txt文件,调用类叫SomeClass,于是可以如下取到:
但是有时候这个jar不是放在classpath中的,怎么取呢?这个方法不好用了,如果想用,只有把jar通过程序动态地加入classpath中,再用上面的方法做,这个方法我好像以前试过,貌似不好用,即使好用,还是有点麻烦.不如用下面的办法最简单,比如这个jar的位置是:d/lib/my.jar,同样要取出b.txt,于是你可以如下得到其输出流,从而进行内容提取.
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();
本文介绍了一种从不在Classpath中的Jar文件里读取资源文件的有效方法。通过使用URL和openStream()方法,可以轻松访问这些资源,而无需将Jar文件添加到Classpath中。

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



