gpt4 book ai didi

java - 无法使用 Files.walkFileTree java nio 打印目录内的子目录

转载 作者:行者123 更新时间:2023-11-29 03:17:26 24 4
gpt4 key购买 nike

我正在运行这段代码来遍历目录 -

import java.io.*;
import java.nio.file.*;
import java.nio.file.attribute.*;

public class FindDirectoriesTest {
public void find()
throws IOException
{
Path dir = Paths.get("some_dir");
Files.walkFileTree(dir, new SimpleFileVisitor<Path>() {
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
throws IOException
{
if (attrs.isDirectory()) {
//do something;
} else {
//do something else
}
return FileVisitResult.CONTINUE;
}
public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException
{
return FileVisitResult.CONTINUE;
}
});
}
}

问题是即使有目录,attrs.isDirectory() 也不会执行。它正确列出了所有常规文件,但没有列出目录。这里有什么遗漏吗?

最佳答案

bskaggs 是对的。我在研究 nio 包时遇到了同样的问题。然后找到了这个页面。想知道为什么这个问题在几年前被问到后没有得到回答或关闭。这是打印您提供的路径的子目录列表的代码。

import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;

public class WalkTreeExample {
public static void main(String[] args) throws IOException {
Path p = Paths.get("C:\\Users");
Files.walkFileTree(p, new SimpleFileVisitor<Path>()
{
@Override
public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
return FileVisitResult.CONTINUE;
}

@Override
public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
if(Files.isDirectory(dir))
System.out.println(dir);
return FileVisitResult.CONTINUE;
}
});
}
}

关于java - 无法使用 Files.walkFileTree java nio 打印目录内的子目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25710932/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com