java - 从可执行 JAR 文件中递归读取图像

标签 java arraylist jar java-8 executable-jar

我正在尝试显示多个 BufferedImage存储在 ArrayList<BufferedImage> 中的元素首先将它们从磁盘读取到数组列表,然后遍历数组列表。由于图像被组织到文件系统上的子文件夹中,因此我将它们读入数组列表

private void storeImages(final File folder) {
    for (final File fileEntry : folder.listFiles()) {
        if (fileEntry.isDirectory()) {
            storeImages(fileEntry);// recursively iterates across all
                                    // subdirectories in folder
        } else {
            try {
                imageList.add(ImageIO.read(fileEntry));
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}

如果我使用JFileChooser选择要调用的目录 storeImages ,那么代码就可以正常工作了。但是,我想将镜像打包成可执行 JAR 文件,这样镜像就不必单独分发,用户也不必在磁盘上查找存储镜像的位置。为了尝试从 JAR 中读取文件,我尝试了

storeImages(new File(getClass().getResource("/images").toString());

但这会抛出 NullPointerException 。如果推送到了紧要关头,我可以从文件系统读取图像,尽管我更喜欢从 JAR 文件中读取它们。我到底应该怎么做才能从 JAR 中读取图像?

最佳答案

不幸的是,如果您想自动浏览 jar 文件,您的代码将无法按原样重用,因为您无法从 jar 文件的内容创建 File 实例。这篇文章对此进行了介绍:Unable to create File object for a file in Jar

还有一个类似的问题提出了一个可能的解决方案:How do I list the files inside a JAR file?

关于java - 从可执行 JAR 文件中递归读取图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30427021/

相关文章:

java - Eclipse PDT (3.4) 在加载时卡住(Ubuntu 8.04、Sun Java 1.6)

java - 将 JSF 项目从 Netbeans 部署到 Tomcat 的问题

java - 如何将 JSONObject 转换为 ArrayList

java - 将 XML 中的项目添加到 arraylist

java - 极其精确的重复/连续代码执行

java - 什么是 NullPointerException,我该如何解决?

java - 从 ArrayList 中选择随机单词?

java - ClassNotFoundException:通过 ANT 构建 JAR 文件中的主类

java - 导入 weka.jar 文件

java - python 子进程运行 jar 出现错误