java - File.isDirectory 和 isFile 均为 false

标签 java

我正在编写一个java应用程序,它列出了目录内容。 当涉及到列出目录时,.isDirectory() 方法的行为对于项目返回 false,我很确定是目录。

public List<DefaultMutableTreeNode> getNodes(String path)
{
    List<DefaultMutableTreeNode> nodes = new ArrayList<>();

    File directory = new File(path).getAbsoluteFile();
    File[] contents = directory.listFiles();

    for (File item : contents)
    {
        if (item.isDirectory())
        {
            DefaultMutableTreeNode node = new DefaultMutableTreeNode(item.getName());
            node.add(new DefaultMutableTreeNode("Placeholder..."));
            nodes.add(node);
        }
        else
        {
            nodes.add(new DefaultMutableTreeNode(item.getName()));
        }
    }

    return nodes;
}

上面的代码总是运行到else分支。 如果我替换循环,我会得到更奇怪的结果:

    for (File item : contents)
    {
        System.out.printf("%s - directory? %b file? %b %n", item.getAbsoluteFile().getPath(), item.isDirectory(), item.isFile());
    }

其输出是:

/storage/other - 目录?假文件?假
/存储/游戏 - 目录?假文件?假
/storage/apps - 目录?假文件?假
/storage/testfile - 目录?假文件?假

如果我列出/storage 目录中的文件,很明显,除了 testfile 之外的所有文件都是一个目录。

我做错了什么?

<小时/>

为了避免混淆,/storage 是/中的实际目录。不是打字错误。

最佳答案

问题的原因是访问权限配置错误。
如果运行应用程序的用户没有执行权限,isDirectory、isFile 和 Exists 将返回 false。

关于java - File.isDirectory 和 isFile 均为 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22445182/

相关文章:

java - 非唯一字段上的 Hibernate ManyToMany 关联

Java clone() 方法

java - 需要创建正则表达式来分析rails服务器日志

java - 替换/删除两个字符之间的字符串

java - 安全约束的 url 模式不起作用

使用泛型类型的 Java 构造函数

java - 是否有为 Delphi (Win32) DLL 创建 C 头文件的工具?

Java泛型,使用原始类的方法

java - 将多部分表单数据上传到 php

java - JEdi​​torpane 与 JTextPane