0

我喜欢 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 类可以做到这一点吗?

4

0 回答 0