从Java目录中获取每个文件

子目录99

我正在尝试编写一种方法,从给定的目录中提取每个文件(也在每个子目录中)。为此,我正在使用 Files.find。问题是,每当它找到我无法访问的文件时,它就会停止,但我想继续研究并将其他文件添加到列表中。这是我的代码

public static List<String> search(String dir){
        List<String> listFiles = new ArrayList<>();
        try{
            Files.find(Paths.get(dir), Integer.MAX_VALUE, (filePath, fileAttr) -> fileAttr.isRegularFile())
                    .forEach((file) -> {
                        listFiles.add(file.toAbsolutePath().toString());
                    });
        } catch (UncheckedIOException ue){
            System.out.println("Can't access that directory");
        } catch (IOException e) {
            e.printStackTrace();
        }

        return listFiles;
    }

我怎样才能改变它?

夜华

您正在寻找Java 8 的 NIO 包中FileVisitor接口。此类提供了多种功能,可在输入目录之前测试其可访问性等,以及内置错误处理和 API 来控制应用程序的行为。

您的具体问题需要创建某种列表(例如在 之外FileVisitor),然后您可以使用该方法从内部填充Collection::add

遗憾的是,Java 的 Stream API 完全无法自行处理异常,因此Stream考虑到 NIO 提供了更冗长但更优越的FileVisitor解决方案,任何尝试用s解决您的问题都需要大量不必要的工作

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章