使用InputStreamReader读取JAR中的目录

使用InputStreamReader读取JAR中的目录,第1张

使用InputStreamReader读取JAR中的目录

如果不先枚举Jar文件的内容,就无法简单地获取内部资源的过滤列表

幸运的是,这实际上并不难(对我来说幸运的是,您已经完成了大部分工作)。

基本上,一旦有了对的引用

JarFile
,您只需要询问它
entries
并在该列表上进行迭代即可。

通过检查

JarEntry
所需匹配项的名称(即
resources
),您可以过滤所需的元素…

例如…

import java.io.File;import java.io.IOException;import java.util.Enumeration;import java.util.jar.JarEntry;import java.util.jar.JarFile;public class ReadMyResources {    public static void main(String[] args) {        new ReadMyResources();    }    public ReadMyResources() {        JarFile jf = null;        try {  String s = new File(this.getClass().getResource("").getPath()).getParent().replaceAll("(!|file:\)", ""); jf = new JarFile(s); Enumeration<JarEntry> entries = jf.entries(); while (entries.hasMoreElements()) {     JarEntry je = entries.nextElement();     if (je.getName().startsWith("resources")) {         System.out.println(je.getName());     } }        } catch (IOException ex) { ex.printStackTrace();        } finally { try {     jf.close(); } catch (Exception e) { }        }    }}

警告

这种类型的问题实际上有点问。与其尝试在运行时读取Jar的内容,不如生成某种包含可用资源列表的文本文件,这会更好。

这可以由您的构建过程在创建Jar文件之前动态产生。然后(

getClass().getResource()
例如,通过)读取该文件,然后在文本文件中查找每个资源列表,这将是一个简单得多的解决方案…恕我直言



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5489097.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-12
下一篇2022-12-12

发表评论

登录后才能评论

评论列表(0条)

    保存