java - 如何从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”。
谢谢你的帮助。
解决方案
找到了获取文件夹内所有文件的解决方案。
如果我们尝试通过 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;
}
推荐阅读
- .net-core - 如何将 exe 发布与控制台 .net core 2.2 应用程序的 VS2019 构建集成?
- mongodb - 如何在 MongoDB 中找到按行数排序的最受欢迎的 ID?
- android - YouTube 嵌入式视频观看次数不计入 Android 应用
- node.js - 从反应应用程序路由以获取从车把生成的服务器端呈现的 HTML
- javascript - 在 [ View ] [ ASP.NET MVC ] 中使用 Java Script 不会更改 src
- python - pytest,用户输入和异常
- pytorch - 在 PyTorch 中降低 Adam 优化器学习率的首选方法
- opayo - 允许使用我们网站的客户直接向我们的客户 Sage Pay 帐户付款
- javascript - 如果文件和要求被删除,如何修复 node.js 中的“错误:ENOENT”?
- python - 为什么调用更新时球不移动(pygame Pong)?