Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java File.isDirectory和isFile都为false_Java - Fatal编程技术网

Java File.isDirectory和isFile都为false

Java File.isDirectory和isFile都为false,java,Java,我正在编写一个java应用程序,它列出目录内容。 在列出目录时,.isDirectory()方法的行为对于项返回false,我很确定是目录 public List<DefaultMutableTreeNode> getNodes(String path) { List<DefaultMutableTreeNode> nodes = new ArrayList<>(); File directory = new File(path).getAb

我正在编写一个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;
}
其输出为:

/存储/其他-目录?假文件?假
/存储/游戏-目录?假文件?假
/存储/应用程序-目录?假文件?假
/存储/测试文件-目录?假文件?假

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

我做错了什么



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

问题的原因是访问权限配置不当。

如果运行应用程序的用户没有执行权限,isDirectory、isFile和exists将返回false。

是否确定
item.exists()
为true
/storage/other
是一个绝对路径,而您可能需要
storage/other
的相对路径(注意开始时缺少
/
)。在调用此方法之前,我将工作目录更改为/storage,因此在“可选”中的路径是正确的循环我只是想看看工作目录是否真的发生了变化,因此是绝对路径。绝对路径是相对于整个文件系统的,而不是相对于您的工作目录的。虽然这是真的,但如果我站在/directory中,检查此处包含的项的绝对路径,绝对路径将是/directory/item。
    for (File item : contents)
    {
        System.out.printf("%s - directory? %b file? %b %n", item.getAbsoluteFile().getPath(), item.isDirectory(), item.isFile());
    }