首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >File.list() vs File.listFiles()

File.list() vs File.listFiles()
EN

Stack Overflow用户
提问于 2013-03-13 02:55:18
回答 2查看 6.8K关注 0票数 14

我的问题是:这两个函数是否有不同之处?我的意思是,我知道它们返回了一些不同的东西,但有没有可能一个中的元素数量会与第二个中的不同。我会尽力解释的。我为我的一个类实现了TreeModel,试图在基于JTree的PC上创建漂亮的文件视图。所以这是它的一部分:

代码语言:javascript
复制
public Object getChild(Object parent, int index) {
        File[] children = ((File) parent).listFiles();
        if(children == null || index < 0 || index >= children.length) {
            return null;
        }

        File result = new MyFile(children[index]);
        return result;
}

public int getChildCount(Object parent) {
        //---
        //String[] children = ((File)parent).list();
        File[] children = ((File)parent).listFiles();
        //---

        if(children == null) {
            return 0;
        }
        return children.length;
}

我标记了有趣的代码。如果我将这两行改为注释一行,有时我会在加载TreeModel:jtree.setModel(treeModel);后得到NullPointerException。这个未注释的内容不会造成任何麻烦。我检查了文档,它没有显示任何异常,包括两个方法都返回null。这里发生什么事情?

EN

回答 2

Stack Overflow用户

发布于 2013-03-13 02:58:22

这两种方法在本质上是相同的,请查看http://www.docjar.com/html/api/java/io/File.java.html了解详细信息。

票数 9
EN

Stack Overflow用户

发布于 2021-02-28 02:14:09

如前所述,但仅在post from D.R中的注释中进行了说明

  • list方法返回带有文件名(文件和目录)的String array

  • listFiles返回同一

array of class File

请参阅文档页面,例如。https://docs.oracle.com/javase/7/docs/api/java/io/File.html

String[] list()返回一个字符串数组,该字符串数组命名由此抽象路径名表示的目录中的文件和目录。File[] listFiles()返回一个抽象路径名数组,该数组表示由该抽象路径名表示的目录中的文件。

我不确定为什么这两种方法都存在,可能字符串数组比文件数组更快,占用的内存更少

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15369744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档