java File类遍历目录详解

KLQ 2020-08-19 14:39:21 java常见问答 6391

下面要给大家介绍的就是java File类遍历目录的内容,具体的一起通过下面的文章来了解一下吧,希望对你可以有所帮助。

通过遍历目录可以在指定的目录中查找文件,或者显示所有的文件列表,File类的list()方法提供了遍历目录功能。

该方法有下面的两种重载形式。

分别是String[] list()和String[] list(FilenameFilter filter)。

首先来说说String[] list(),这个方法表示返回由File对象表示目录中所有文件和子目录名称组成的字符串数组,假如,调用的File对象不是目录,则返回null。

注意:list()方法返回的数组中仅包含文件名称,而不包含路径,但不保证所得数组中的相同字符串将以特定顺序出现,特别是不保证它们按字母顺序出现。

String[] list(FilenameFilter filter),这个方法的作用和list()方法相同,区别在于,返回数组中仅包含符合filter过滤器的文件和目录,假如filter为null,那么就接受所有名称。

示例:

假设要遍历C盘根目录下的所有文件和目录,并显示文件或目录名称、类型及大小,使用list()方法的实现代码:

public class Test05
{
    public static void main(String[] args)
    {
        File f = new File("C:/"); // 建立File变量,并设定由f变量变数引用
        System.out.println("文件名称\t\t文件类型\t\t文件大小");
        System.out.println("===================================================");
        String fileList[] = f.list(); // 调用不带参数的list()方法
        for (int i = 0; i < fileList.length; i++)
        { // 遍历返回的字符数组
            System.out.print(fileList[i] + "\t\t");
            System.out.print((new File("C:/", fileList[i]))
                .isFile() ? "文件" + "\t\t" : "文件夹" + "\t\t");
            System.out.println((new File("C:/", fileList[i]))
                .length() + "字节");
        }
    }
}

因为list()方法返回的字符数组中仅包含文件名称,所以,为了获取文件类型和大小,一定要先转换为File对象再调用其方法,下面的是实例运行效果:

文件名称  文件类型  文件大小
===================================================
$Recycle.Bin  文件夹  4096字节
Documents and Settings  文件夹  0字节
Download  文件夹  0字节
DRIVERS  文件夹  0字节
FibocomLog  文件夹  0字节
Gateface  文件夹  0字节
GFPageCache  文件夹  0字节
hiberfil.sys  文件  3375026176字节
Intel  文件夹  0字节
KuGou  文件夹  0字节
logs  文件夹  0字节
msdia80.dll  文件  904704字节
MSOCache  文件夹  0字节
MyDownloads  文件夹  0字节
MyDrivers  文件夹  0字节
news.template  文件  417字节
NVIDIA  文件夹  0字节
OneDriveTemp  文件夹  0字节
opt  文件夹  0字节
pagefile.sys  文件  6442450944字节
PerfLogs  文件夹  0字节
Program Files  文件夹  12288字节
Program Files (x86)  文件夹  8192字节
ProgramData  文件夹  12288字节
QMDownload  文件夹  0字节
Recovery  文件夹  0字节
swapfile.sys  文件  268435456字节
System Volume Information  文件夹  12288字节
Users  文件夹  4096字节
Windows  文件夹  16384字节

示例:

假设,希望只列出目录下的某些文件,这就需要调用带过滤器参数的list()方法,首先需要创建文件过滤器,这个过滤器必须实现接口接口,并在accept()方法中指定允许的文件类型。

允许SYS、TXT和BAK格式文件的过滤器实现代码:

public class ImageFilter implements FilenameFilter
{
    // 实现 FilenameFilter 接口
    @Override
    public boolean accept(File dir, String name)
    {
        // 指定允许的文件类型
        return name.endsWith(".sys") || name.endsWith(".txt") || name.endsWith(".bak");
    }
}

上面的代码创建的过滤器名称为ImageFilter,下面的话只要将该名称传递给list()方法就可以实现筛选文件,下面的是修改后的list()方法,其他代码和上面的示例相同,这里不再重复。

String fileList[] = f.list(new ImageFilter());

运行程序,遍历结果:

文件名称        文件类型        文件大小
===================================================
offline_FtnInfo.txt        文件        296字节
pagefile.sys        文件        8436592640字节

java File类遍历目录的内容你都清楚了吗?更多相关java入门知识,请继续关注本站来进行了解吧。

推荐阅读:

java File类创建和删除目录详解

java File类创建和删除文件详解

java File类获取文件属性详解