gpt4 book ai didi

java - 如何递归搜索文件并跳过权限不足的文件?

转载 作者:行者123 更新时间:2023-11-30 06:06:50 25 4
gpt4 key购买 nike

所以,我最近发布了一个在递归搜索文件时收到的错误,这是因为我需要 super 用户权限才能查看文件。我对此并不感兴趣,所以我浏览了网络,我最好的选择就是使用 try/catch 语句,但问题是我正在使用的方法(如下所示)如果出现错误,它将完全停止,然后如果我再次启动它,它会完全重新启动。

所以这是代码:

Files.walk(Paths.get("C:\\"))
.filter(Files::isRegularFile)
.forEach(System.out::println);

如何跳过我没有足够权限查看的文件?

最佳答案

使用访客代替步行。这使您即使在失败的情况下也可以继续。我在一个 linux 文件上尝试过这个,它给出了类似的错误。您可以在 Windows 中尝试相同的操作。

private static final class ExSafeVisitor extends SimpleFileVisitor<Path>
{
@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException
{
if (Files.isReadable(dir))
{
return FileVisitResult.CONTINUE;
}
else
{
return FileVisitResult.SKIP_SUBTREE;
}
}

@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException
{
if (Files.isReadable(file))
{
System.out.println("file = " + file);
}
return FileVisitResult.CONTINUE;
}

@Override
//print exception but proceed
public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException
{
exc.printStackTrace();
return FileVisitResult.CONTINUE;
}
}

//Files.walk for this path in linux throws exception
Files.walkFileTree(Paths.get("/sys/kernel"), new ExSafeVisitor());

关于java - 如何递归搜索文件并跳过权限不足的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51117801/

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