首页 > 解决方案 > 如何从java资源文件夹中的文件夹中获取所有文件的列表

问题描述

我在“协议”文件夹中有多个文件。我想获取位于 java 资源文件夹(src/main/resources/protocol/...)内的“协议”文件夹中的文件列表。

因此,当我尝试访问任何一个文件时,它在 Eclipse IDE(使用 main 方法)以及 Wildfly 部署中都可以正常工作。它给出文件内的行。

List<String> files = IOUtils.readLines(classLoader.getResourceAsStream("protocol/protocol1.csv"));

但是当尝试读取文件夹时,它在 Eclipse IDE(获取文件名列表)中工作正常,但在 Wildfly 部署中不起作用,它给出了一个空白列表 []。

List<String> files = IOUtils.readLines(classLoader.getResourceAsStream("protocol"));

我正在使用 jboss wildfly 服务器版本:9.0.1 和 java 版本“1.8.0_161”。

谢谢你的帮助。

标签: javaiowildfly-9

解决方案


找到了获取文件夹内所有文件的解决方案。

如果我们尝试通过 getResource() 方法访问文件夹,它将根据 vfs 协议返回,我们需要将其转换为

public List<String> loadFiles() throws IOException, Exception {
        List<String> fileNames = new ArrayList<>();
        URL resourceUrl = getClass().getResource("/protocol");
        VirtualJarInputStream jarInputStream = (VirtualJarInputStream) resourceUrl.openStream();
        JarEntry jarEntry = null;
        while ((next = jarInputStream.getNextJarEntry()) != null) {
            fileNames.add(jarEntry.getName());
        }
        return fileNames;
    }


推荐阅读