如何从 java 资源文件夹中的文件夹中获取所有文件的列表
how to get list of all files from folder inside java resources folder
我在 'protocol' 文件夹 中有 多个文件。我想获取 'protocol' 文件夹内的文件列表,该文件夹位于 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 服务器 version:9.0.1 和 java 版本“1.8.0_161”.
感谢您的帮助。
类似于:
URL url = classLoader.getResourceAsStream("protocol");
Path dirPath = Paths.get(url.toURI());
Stream<Path> paths = Files.list(dirPath);
List<String> names = paths
.map(p -> p.getFileName().toString())
.collect(Collectors.toList());
说明Path是File的更细化概括。
它使用 jar:file:
协议(协议,如 http:)。
找到了获取文件夹内所有文件的解决方案。
如果我们尝试通过 getResource() 方法访问文件夹,它将 return 根据 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;
}
我在 'protocol' 文件夹 中有 多个文件。我想获取 'protocol' 文件夹内的文件列表,该文件夹位于 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 服务器 version:9.0.1 和 java 版本“1.8.0_161”.
感谢您的帮助。
类似于:
URL url = classLoader.getResourceAsStream("protocol");
Path dirPath = Paths.get(url.toURI());
Stream<Path> paths = Files.list(dirPath);
List<String> names = paths
.map(p -> p.getFileName().toString())
.collect(Collectors.toList());
说明Path是File的更细化概括。
它使用 jar:file:
协议(协议,如 http:)。
找到了获取文件夹内所有文件的解决方案。
如果我们尝试通过 getResource() 方法访问文件夹,它将 return 根据 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;
}