如何从Java Resources文件夹中的文件夹获取所有文件的列表

时间:2019-12-05 11:28:32

标签: java io wildfly-9

我在“协议”文件夹中包含多个文件。我想获取位于Java资源文件夹(src / main / resources / protocol / ...)内的'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”。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

找到了提取文件夹中所有文件的解决方案。

如果我们尝试通过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;
    }

答案 1 :(得分:0)

类似的东西:

@RestController
public class StudentResource {

@GetMapping(path="/testing")
public void method(@RequestBody Student student,@Valid 
 @RequestHeader(value="Authorization") @Size(min=1)  @NotBlank String auth) 
{

    System.out.println("Valid request");

}

}

它表明Path是File的更精细的概括。 它使用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()); 协议(协议如http:)。