24.java- File类的常用方法:遍历目录里的文件

本文介绍了Java中File类的list()和listFiles()方法用于遍历目录的功能。list()方法返回目录中所有文件和子目录的名称,而listFiles()方法返回File对象数组,包含目录中的所有文件和子目录。此外,还展示了如何使用FilenameFilter和FileFilter实现特定条件的文件过滤,例如按名称前缀或文件类型筛选。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

遍历目录
通过遍历目录可以在指定的目录中查找文件,或者显示所有的文件列表。

1.File 类的 list()

File 类的 list() 方法提供了遍历目录功能,该方法有如下两种重载形式。

  1. String[] list()
    该方法表示返回由 File 对象表示目录中所有文件和子目录名称组成的字符串数组,如果调用的 File 对象不是目录,则返回 null
    提示:list() 方法返回的数组中仅包含文件名称,而不包含路径。但不保证所得数组中的相同字符串将以特定顺序出现,特别是不保证它们按字母顺序出现。
  2. String[] list(FilenameFilter filter)
    该方法的作用与 list() 方法相同,不同的是返回数组中仅包含符合 filter 过滤器的文件和目录,如果 filter 为 null,则接受所有名称。

在这里插入图片描述

public class readbyte {

    public static void main(String[] args)  {

        File folder = new File("./target");
        String fileList[] = folder.list();

        for (int i = 0; i < fileList.length; i++) { // 遍历返回的字符数组
            System.out.println(fileList[i]);
        }
}

输出

在这里插入图片描述

在这里插入图片描述

2. File类的listFiles()

listFiles()方法是File类的一部分。如果路径名是目录,则该函数返回一个File数组,表示给定抽象路径名中的文件,否则返回null。该函数是重载函数。其中一个函数没有任何参数,第二个函数将FilenameFilter对象作为参数,第三个函数将FileFilter对象作为参数

函数签名:

public File[] listFiles()
public File[] listFiles(FilenameFilter f)
public File[] listFiles(FileFilter f)

函数语法:
file.listFiles()
file.listFiles(filter)
参数:该函数是重载函数

该函数之一没有任何参数,
第二个函数将FilenameFilter对象作为参数,
第三个函数将FileFilter对象作为参数
返回值:该函数返回一个File数组,如果文件对象是一个文件,则返回null值。

异常:如果不允许该函数对该文件进行读取访问,则此方法将引发Security Exception

下面的程序将说明listFiles()函数的用法

  • 例1
    查找给定目录中的所有文件和目录

在这里插入图片描述

import java.io.File;

public class readbyte {

    static String dirpath = "./test.txt";
    public static void main(String[] args)  {

        File folder = new File("./target");
        File[] listOfFiles = folder.listFiles();

        // Display the names of the files
        for (File f : listOfFiles) {
            String fileName = f.getName();
            System.out.println(fileName);
        }
        //这种方法也可以
        for (int i = 0; i < listOfFiles.length; i++) {
            System.out.println(listOfFiles[i].getName());
        }
    }
}

String getName()	
返回表示当前对象的文件名或路径名(如果是路径,则返回最后一级子路径名)

输出
在这里插入图片描述

在这里插入图片描述

  • 例2
    在给定目录中查找名称以“ (0,5)”开头的所有文件

在这里插入图片描述

import java.io.File;
import java.io.FilenameFilter;

public class readbyte {
	 public static void main(String[] args)  {
 
	  File folder = new File("./target");

        // Create a FilenameFilter
        FilenameFilter filter = new FilenameFilter() {

            public boolean accept(File f, String name)
            {
                return name.startsWith("(0,5)");
            }
        };

        File[] listOfFiles = folder.listFiles(filter);

        System.out.println("Files are:");

        // Display the names of the files
        for (File f : listOfFiles) {
            String fileName = f.getName();
            System.out.println(fileName);
        }
	}
}

输出
在这里插入图片描述

  • 例3
    查找给定目录中的所有文件和目录,它们都是文本文件。
import java.io.File;
import java.io.FileFilter;
public class readbyte {


    public static void main(String[] args)  {

        File folder = new File("./target");

        // Create a FileFilter
        FileFilter filter = new FileFilter() {

            public boolean accept(File f)
            {
                return f.getName().endsWith("txt");
            }
        };

        // Get all the names of the files present
        // in the given directory
        // which are text files
        File[] listOfFiles = folder.listFiles(filter);

        System.out.println("Files are:");

        // Display the names of the files
        for (File f : listOfFiles) {
            String fileName = f.getName();
            System.out.println(fileName);
        }

    }
}

输出

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值