当前位置: 首页 > 知识库问答 >
问题:

为什么files.ishidden()不能正常工作?

申屠瀚海
2023-03-14

我正在使用Java NIO,由于某种原因,我无法获得files.isHidden()来返回正确的布尔值。程序只是检查目录是否隐藏,如果隐藏,则使其可见,如果不隐藏,则使其隐藏。这就是我所拥有的:

    Path start = FileSystems.getDefault().getPath("E:/Documents/someDirectory");
    try {
        if (Files.isHidden(start)){
            System.out.println("Dir is hidden.");
            Files.setAttribute(start, "dos:hidden", false);
        } else {
            System.out.println("Dir is not hidden. Hiding.");
            Files.setAttribute(start, "dos:hidden", true);
        }

    } catch (IOException e) {
        e.printStackTrace();
    }

它继续返回false并隐藏目录,尽管目录被隐藏。下面的代码使用旧的File类和Path类可以很好地工作。

    Path start = FileSystems.getDefault().getPath("E:/Documents/someDirectory");
    File file = new File("E:/Documents/someDirectory");
    try {
        if (file.isHidden()){
            System.out.println("Dir is hidden.");
            Files.setAttribute(start, "dos:hidden", false);
        } else {
            System.out.println("Dir is not hidden. Hiding.");
            Files.setAttribute(start, "dos:hidden", true);
        }

    } catch (IOException e) {
        e.printStackTrace();
    }

共有1个答案

百里弘致
2023-03-14

正如注释中已经指出的,files.ishidden的文档说明:

hidden的确切定义是依赖于平台或提供商的。[…]在Windows上,如果一个文件不是目录,并且设置了DOS hidden属性,则该文件被认为是隐藏的。

虽然最后引用的句子已经解释了While不返回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);
 类似资料:
  • 我一直在用SceneBuilder 9.0.1在IntelliJ上做一个项目。昨天,在NetBeans 8上做了一个小型项目,12之后由于某种原因没有启动新项目。一旦关闭所有内容并打开IntelliJ项目,fxml文档就无法使用SceneBuilder打开。对于这个问题,需要注意以下几点: 我使用的是9.0.1版,尽管v15也有同样的问题, 其中一个fxml文件的示例如下: 请帮助。

  • 我正在尝试制作一个简单的Pygame应用程序,其中一些颜色与它们下面的颜色混合。以下是我的代码: 代码列表1: 代码应该使黄色矩形与橙色矩形混合,蓝色矩形与绿色矩形混合。相反,我从中得到了一些东西: 对此: 正如你所看到的,黄色和蓝色矩形不仅与红色矩形(屏幕表面)相融合,而且还为橙色和绿色矩形开了一个洞,这样我们就可以通过它们看到红色矩形。

  • 问题内容: 作为回答另一个问题的一部分,我编写了以下代码,乍看之下其行为似乎很奇怪: 谁能解释这个奇怪的行为?我认为这与Python的对象模型有关,但我不确定。 Cygwin下的版本2.5.2。 问题答案: Python具有这两个(以及其他)内置对象。它们只是对象。刚开始时,它们还没有任何名称,但是要知道我们指的是什么,我们将它们称为和。 在开始执行Python(2.x)脚本之前,该名称已绑定到该

  • 我试图在一个变量中保存得分为80分或80分以上的学生的姓名,但我无法使用filter进行保存,它返回整个对象,尽管我指定只打印这些对象的键值,即这些学生的姓名。 我的代码: 我怎样才能得到得分在80分以上的学生的名字?

  • 我使用react和laravel开发了一个应用程序来显示酒店列表。当用户点击一个单一的酒店,我希望该酒店的细节显示在一种类型的‘单一’视图。然而,尽管在主列表视图中,我使用正确的路由模式链接到单个页面,并且我在路由器中定义了该模式,但当我单击该链接时,我会被带到一个“404 not found”页面。 编辑文章的编辑链接也是如此。 任何关于如何解决这个问题的想法都将非常感谢! 谢谢, 罗伯特·杨