在Unix上,Files.walkFileTree
将使用FileVisitor.visitFile
回调BasicFileAttributes
,实际上是sun.nio.fs.UnixFileAttributes$UnixAsBasicFileAttributes
。正如调试器所示,包装的UnixFileAttributes
已包含权限信息(填充了st_mode
字段)。是否有(优雅)方式解包 UnixFileAttributes$UnixAsBasicFileAttributes
以获得至少PosixFileAttributes
以便可以访问权限?反射对我不起作用,但在尝试调用IllegalAccessError
时会产生UnixFileAttributes$UnixAsBasicFileAttributes.unwrap
。
另外,我想避免为每个报告的文件显式调用Files.getPosixFilePermissions(file)
,因为这会为我的测试用例提供大约10%的开销。