更新时间:2022-10-11 来源:黑马程序员 浏览量:

  File类的list()方法用于遍历指定目录下的所有文件。下面通过一个案例来演示如何使用list()方法遍历目录文件,如文件7-4所示。
import java.io.File;
public class Example03{
  public static void main(String[] args)throws Exception {
    // 创建File对象
    File file = new File("D:/IdeaWorkspace/chapter07");
    if(file.isDirectory()) { // 判断File对象对应的目录是否存在
        String[] names = file.list(); // 获得目录下的所有文件的文件名
             for (String name : names) {
                  System.out.println (name);  //输出文件名
             }
    }
  }
}文件7-4 Example03.java
文件7-4的运行结果如图7-6所示。
在文件7-4中,第5行代码创建了一个File对象,并指定了一个路径,通过调用File的isDirectory()方法判断路径指向的是否为存在的目录,如果存在就调用list()方法,获得一个String类型的数组names,数组中包含这个目录下所有文件的文件名。接着通过循环遍历数组names,依次打印出每个文件的文件名。
文件7-4实现了遍历一个目录下所有文件的功能,然而有时程序只是需要得到指定类型的文件,如获取指定目录下所有的“.java”文件。针对这种需求,File类中提供了一个重载的list(FilenameFilter filter)方法,该方法接收一个FilenameFilter类型的参数。FilenameFilter是一个接口,称为文件过滤器,当中定义了一个抽象方法accept(File dir,String name)。在调用list()方法时,需要实现文件过滤器FilenameFilter,并在accept()方法中做出判断,从而获得指定类型的文件。
为了让初学者更好地理解文件过滤的原理,接下来分步骤分析list(FilenameFilter filter)方法的工作原理。
(1)调用list()方法传入FilenameFilter文件过滤器对象。
(2)取出当前File对象所代表目录下的所有子目录和文件。
(3)对于每一个子目录或文件,都会调用文件过滤器对象的accept(File dir,String name)方法,并把代表当前目录的File对象以及这个子目录或文件的名字作为参数dir和name传递给方法。
  (4)如果accept()方法返回true,就将当前遍历的这个子目录或文件添加到数组中,如果返回false,则不添加。

图7-6 文件7-4的运行结果
1024首播|39岁程序员逆袭记:不被年龄定义,AI浪潮里再迎春天
2025-10-241024程序员节丨10年同行,致敬用代码改变世界的你
2025-10-24【AI设计】北京143期毕业仅36天,全员拿下高薪offer!黑马AI设计连续6期100%高薪就业
2025-09-19【跨境电商运营】深圳跨境电商运营毕业22个工作日,就业率91%+,最高薪资达13500元
2025-09-19【AI运维】郑州运维1期就业班,毕业14个工作日,班级93%同学已拿到Offer, 一线均薪资 1W+
2025-09-19【AI鸿蒙开发】上海校区AI鸿蒙开发4期5期,距离毕业21天,就业率91%,平均薪资14046元
2025-09-19