获取文件夹中的文件数,省略子文件夹

时间:2010-11-18 18:53:24

标签: java file directory

是否可以使用Java获取文件夹中的文件数? 我的问题可能看起来很简单,但我是Java的新领域!

更新

我在评论中看到了这个链接。他们没有解释省略目标文件夹中的子文件夹。 怎么做?如何省略子文件夹并获取指定目录中的文件?

任何建议!!

3 个答案:

答案 0 :(得分:9)

纯Java的一种方法是:

int nFiles = new File(filename).listFiles().length;

编辑(问题编辑后):

您可以使用接受FileFilter的listFiles()变体排除文件夹。 FileFilter接受文件。您可以测试该文件是否是目录,如果是,则返回false。

int nFiles = new File(filename).listFiles( new MyFileFilter() ).length;

...

private static class MyFileFilter extends FileFilter {
  public boolean accept(File pathname) {
     return ! pathname.isDirectory();
  }
}

答案 1 :(得分:1)

您需要使用File类。这是一个example

答案 2 :(得分:0)

此方法允许您计算文件夹内的文件,而不会立即将所有文件加载到内存中(考虑到文件大量可能导致程序崩溃的文件夹,这是很好的),如果你有额外检查文件扩展名等等。将附加条件放在f.isFile()旁边。

import org.apache.commons.io.FileUtils;
private int countFilesInDir(File dir){
    int cnt = 0;
    if( dir.isDirectory() ){
        Iterator it = FileUtils.iterateFiles(dir, null, false);
        while(it.hasNext()){
            File f = (File) it.next();
            if (f.isFile()){ //this line weeds out other directories/folders
                cnt++;
            }
        }
    }
    return cnt;
}

在这里,您可以下载commons-io库:https://commons.apache.org/proper/commons-io/