java - 查找文件夹列表中的最后一个文件夹

标签 java file

是否有更快的方法来查找内部没有其他文件夹的文件夹?

File dir = new File("C:\\Users\\axs0552\\Desktop\\barcode\\");
File[] cartella = dir.listFiles();

List<String> Nome_cartela = null;
if (cartella == null) {
    logger.debug("ERRORE: cartella inesistente, oppure directoy errata !!");
} else {
    for (int i = 0; i < cartella.length; i++) {
        if (cartella[i].isDirectory()) {
            System.out.println("cartella radice n° :" + i + " " + cartella[i].getName());
            File[] figli = cartella[i].listFiles();
            for (int j = 0; i < figli.length; i++) {
                if (figli[i].isDirectory()) {
                    System.out.println("cartella figlio n° :" + j + " " + figli[i].getName());
                }
            }
        }
    }
}

最佳答案

如果您想递归地检查所有目录,我建议使用FileVisitor。这是一个简单的示例,仅输出进入和离开时的所有名称并计算目录:

public class MyFileVisitor implements FileVisitor<Path> {
    private int dirCount = 0;

    @Override
    public FileVisitResult preVisitDirectory(Path path, BasicFileAttributes bfa) throws IOException {
        System.out.println("Entering directory: " + path);
        dirCount++;
        return FileVisitResult.CONTINUE;
    }

    @Override
    public FileVisitResult postVisitDirectory(Path path, IOException ex) throws IOException {
        System.out.println("Leaving directory: " + path);
        return FileVisitResult.CONTINUE;
    }

    @Override
    public FileVisitResult visitFile(Path path, BasicFileAttributes bfa) throws IOException {
        return FileVisitResult.CONTINUE;
    }

    @Override
    public FileVisitResult visitFileFailed(Path path, IOException ex) throws IOException {
        return FileVisitResult.CONTINUE;
    }

    public int getDirCount() {
        return dirCount;
    }

}

主要看起来像这样:

public class Main {

    public static void main(String[] args) {
        Path path = Paths.get("c:/users");
        MyFileVisitor fileVisitor = new MyFileVisitor();
        try {
            Files.walkFileTree(path, fileVisitor);
            System.out.println(fileVisitor.getDirCount() + " directories");
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

}

关于java - 查找文件夹列表中的最后一个文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36083647/

相关文章:

java - "no more handles"的原因

Java char/int 转换困惑

java - 如何在 Intellij 中使用 LWJGL 2 而不是 LWJGL 3?

C文件同步

java - 为什么我的程序会重复出现? Java错误

java - hibernate 条件列表后的 Postgresql 无限循环

java - 在java中写入文件 - 关闭或刷新

java - 使用android存储文件和文件夹

r - 在 R 上打开 Rdata 文件

python - 如何在Python中的一个变量中同时以读取和追加模式打开文件?