正如评论中已经指出的
Files.isHidden
状态:
隐藏的确切定义取决于平台或提供商。[]在Windows上,如果文件不是目录并且设置了DOS隐藏属性,则认为该文件是隐藏的。
虽然最后一句话已经解释了,但它没有返回Windows上目录的预期值,我想强调第一句话。您使用的方法带有特定于平台/提供者的语义,而您只想切换特定于平台的标志。
在这种情况下,您应该完全这样做,这也省略了代码的条件:
Path start=Paths.get("E:/Documents/someDirectory");
boolean isHidden=(Boolean)Files.getAttribute(start, "dos:hidden");
System.out.println("Dir is "+(isHidden? "hidden. Showing.": "not hidden. Hiding"));
Files.setAttribute(start, "dos:hidden", !isHidden);
还要注意方便方法
Paths.get(â¦)
对于
FileSystems.getDefault().getPath(â¦)
.