java - Files.isHidden C:\\ 在 Windows 上的 JDK12 和 JDK13 之间更改
问题描述
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
推荐阅读
- django - 从 Django 的项目目录中提供静态文件
- java - javafx vbox 和 gridpane
- javascript - javascript - Uncaught (in promise) TypeError: e.iterator is not a function。如何解决此类错误?
- angular - 由于地理围栏插件,Ionic 构建失败
- oracle - 如何从不同模式的触发器调用另一个模式的过程
- javascript - 使用 angular 8 生成 pwa 到 apk 或 ios
- swift - Combine 如何知道 ObservableObject 实际发生了变化
- flutter - 带有“:”的命名构造函数
- tizen - 蒂岑。如何更新页面内容 CircleScrollView 的子项
- postgresql - 如何在不使用 ORM 的情况下将 Nestjs 应用程序连接到 postgreSQL?