以下是一些简单的代码,仅用于测试该Files.walkFileTree()
方法。但是,/etc/ssl/private
具有这些权限 ( rwx--x---
) 的文件夹会引发异常,即使我认为我使用 if 语句 ( if (permissions.equals("rwx--x---")
) 保护它也是如此。
我究竟做错了什么?提前致谢。
public static void main (String []args) throws IOException, InterruptedException
{
Files.walkFileTree(Paths.get("/"), new WalkingTheThing2());
}
@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException
{
PosixFileAttributeView posixView = Files.getFileAttributeView(dir, PosixFileAttributeView.class);
PosixFileAttributes posixAttr = posixView.readAttributes();
String permissions =PosixFilePermissions.toString(posixAttr.permissions());
if (permissions.equals("rwx--x---"))
{
return FileVisitResult.SKIP_SUBTREE;
}
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
throws IOException {
try{
System.out.println(file.getFileName()+" " +Files.size(file));
return FileVisitResult.CONTINUE;
}
catch(IOException io){return FileVisitResult.CONTINUE;}
}
我得到的例外是: java.nio.file.AccessDeniedException: /etc/ssl/private
编辑:通过覆盖解决visitFileFailed
:
public FileVisitResult visitFileFailed(Path file, IOException io)
{
return FileVisitResult.SKIP_SUBTREE;
}