Files.isHidden(Path.of("c:\\"))
在 Windows 10、JDK 13 上返回 true
但在 JDK 12 同一台机器上返回 false。
有谁知道这是为什么?
如前所述,行为上的差异是由于修复了一个错误:JDK-8215467。该错误的描述解释说,在修复之前,结果Files#isHidden(Path)
与 Windows 上的其他核心软件(例如文件资源管理器、PowerShell、CMD等)不一致。不一致之处在于 Windows 中的目录当然可以被隐藏,但 Java(或至少 NIO2)却不这么认为。
在对该问题的评论中指出,结果也与java.io.File#isHidden()
. 事实上,如果你使用:
File file = new File("C:\\");
System.out.println(file.isHidden());
true
即使在 Java 12 和更早版本(至少我在我的 Windows 10 Home 机器上),你也会看到打印出来的。
被报道为隐藏的事实C:\
对我来说似乎是正确的。如果我检查PowerShellC:\
中的属性,它会将目录显示为隐藏。
PS C:\> $root = Get-Item "C:\"
PS C:\> $root.Attributes
Hidden, System, Directory