关于File类中常用方法和知识点

关于File类中常用方法和知识点

File中的List()方法和ListFile()方法的区别和使用

返回值类型元素内容
List()方法中的返回值是String[]数组类型string类型的【文件名】(包含后缀名)
Listfile()方法的返回值类型是File[]对象数组File对象类型的【完整路径】

因此,遍历文件夹中所有文件,包括子文件夹中的文件时,最好用listFiles()方法,看起来更加明了,使用List方法的话不知道文件时哪个子文件夹下面的,因为只显示文件名。代码示例:

import java.io.File;

public class Demo {
    public static void main(String[] args) {
        File file=new File("D:\\BaiduNetdiskDownload");
        String[] list = file.list();
        System.out.println("=========list()遍历结果========");
        for (String s : list) {
            System.out.println(s);
        }
        System.out.println("=====listfiles()遍历结果=========");
        File[] files = file.listFiles();
        for (File file1 : files) {
            System.out.println(file1);
        }
    }
}

两种运行结果如图:
在这里插入图片描述

File中过滤器FilenameFilter()和FileFilter的参数详解和使用

接口FileFilter
用于抽象路径名的过滤器,此接口的实例可传递给File类的listFiles(FileFilter)方法
方法:public boolean accept(File pathname) 可以对路径进行过滤

接口FilenameFilter
用于过滤文件名,Abstract Window Toolkit的文件对话框组件使用这些实例过滤File类的list方法中的目录清单。
方法:
public boolean accept(File dir, String name) 用于对文件名进行过滤

代码案例:

import java.io.File;
import java.io.FileFilter;
public class Demo {
    public static void main(String[] args) {
        //测试Filefilter接口
        File file = new File("D:\\BaiduNetdiskDownload");
        File[] files = file.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                if (pathname.canWrite()){
                    return true;
                } else {
                    return false;
                }
            }
        });
        for (File file1 : files) {//遍历
            System.out.println(file1);
        }

    }
}

测试结果
在这里插入图片描述

import java.io.File;
import java.io.FilenameFilter;
public class Demo {
    public static void main(String[] args) {
        //测试FileNamefilter接口
        File file = new File("D:\\BaiduNetdiskDownload");
        File[] files = file.listFiles(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                if(name.endsWith(".rar")){//过滤出来后缀为.rar的文件
                    return true;
                }else{
                    return false;
                }
            }
        });  
         for (File file1 : files) {//遍历
            System.out.println(file1);
        }        
    }
}

测试结果:
在这里插入图片描述

File中递归查看和删除指定文件夹的所有文件

递归查看指定文件夹下的所有文件(包括子文件夹下的文件)

 public static void main(String[] args) {
        File file =new File("D:\\step1");
        getFiles(file);
public static void listDir(File dirl){
        System.out.println(dir.toString());
        File[] files = dir.listFiles();
        if(files!=null&&files.length>0){
            for (File file : files) {
                if(file.isDirectory()){
                    listDir(filel);
                }else{
                    System.out.println(file.toString());
                }
            }
        }
    }
   }

递归删除指定文件夹下的所有文件(包括子文件夹下的文件)

 public static void main(String[] args) {
        File file =new File("D:\\step1");
        deleteFiles(file);
 public static void deleteFile(File dir){
        File[] files = dir.listFiles();
        if(files!=null&&files.length>0){
            //删除文件
            for (File file : files) {
                if(file.isDirectory()){
                    deleteFile(file);
                }else{
                    System.out.println(file.toString()+":"+file.delete());
                }
            }
            //把文件夹删除
            System.out.println(dir.toString()+":"+dir.delete());
        }

    }
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值