可以告诉 Java FileVisitor 跳过文件并仅返回文件夹路径吗?

问题描述

我喜欢 FileVisitor 界面,因为它能够忽略走路径时遇到的任何错误。但是,我需要使用它来仅返回所走路径中文件夹的路径。我不希望它接触或以任何方式提供有关每个文件夹中文件的任何信息,我只想要它接触的每个文件夹的完整路径。

这里是 FileVisitor 类的典型实现

import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.FileVisitor;
import java.nio.file.Path;
import java.nio.file.attribute.BasicFileAttributes;

class myFileVisitor implements FileVisitor<Path> {

    @Override
    public FileVisitResult preVisitDirectory(
            Path dir,BasicFileAttributes attrs) {
        return null;
    }

    @Override
    public FileVisitResult visitFile(
            Path file,BasicFileAttributes attrs) {
        return null;
    }

    @Override
    public FileVisitResult visitFileFailed(
            Path file,IOException exc) {
        return null;
    }

    @Override
    public FileVisitResult postVisitDirectory(
            Path dir,IOException exc) {
        return null;
    }
}

我将如何实现对此类的指令以仅返回它遍历的每个文件夹的路径,而根本不返回文件,同时保持忽略无法访问的文件夹或权限错误等可能遇到的任何错误的能力。 ?

我正在寻找的输出示例最终会成为一个像这样的列表,只有列表中的每个项目都是文件夹路径,而不是文件(我意识到我在这个中有斜杠例如,但这只是表明它是我想要的文件夹):

/Users/
/Users/user/
/Users/user/Documents/
/Users/user/Documents/Finance/
/Users/user/Documents/Finance/CompanyA/
/Users/user/Documents/Finance/CompanyB/
/Users/user/Documents/Finance/CompanyC/
/Users/user/Documents/HumanResources/
/Users/user/Documents/HumanResources/A-G/
/Users/user/Documents/HumanResources/H-O/
/Users/user/Documents/HumanResources/P-U/
/Users/user/Documents/HumanResources/V-Z/
/Users/user/Downloads/
/Users/user/Downloads/CadFiles/

这可以通过 FileVisitor 类实现吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)