美文网首页java成长笔记
File遍历或删除所有文件

File遍历或删除所有文件

作者: G_uest | 来源:发表于2019-07-31 23:56 被阅读0次
  1. 遍历指定目录下的所有文件
  2. 删除指定文件夹

实现方式:
这里我使用了listFiles(FileFilter filter)方法,通过匿名内部类实现的 FileFilter 接口

  1. 遍历文件夹下所有文件和文件夹。
  2. 调用方法一,返回ArrayList,遍历集合,对文件(夹)进行删除操作。
  3. 调用方法一,返回ArrayList,对集合进行过滤。

过滤器

方法 返回值 说明
listFiles(FileFilter filter) File[] 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。
listFiles(FilenameFilter filter) File[] 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。

二者作用一样,只不过实现接口略有不同。

import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * 遍历文件夹中的所有文件,包括子文件夹下的文件
 * 遍历之后,逐级删除文件和文件夹
 * @author jiayanzhao
 * 2019年7月31日
 */
public class fileTraversalAndDeletion {

    public static void main(String[] args) {
        File file = new File("F:/test");
        // 如果文件不存在
        if (!file.exists()) {
            System.out.println("File does not exist");
            return;
        }
        // 遍历目录中的文件并打印
        ArrayList<File> files = traversalFile(file);
        for (File temFile : files) {
            System.out.println(temFile);
        }
        // 删除文件夹,及文件夹下的所有内容
//      deletionFile(file);
        
    }
    
    /**
     * 遍历文件夹下所有文件和文件夹
     * @param file
     */
    static ArrayList<File> traversalAll(File file) {
        ArrayList<File> files = new ArrayList<>();
        // 数组形式保存当前目录下的文件和文件夹
                // 匿名内部类实现 FileFilter 接口
        File[] tempFiles = file.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                // 如果是文件夹,就递归遍历 子文件夹。
                if (pathname.isDirectory()) {
                    // 把子文件夹中的文件添加到 大集合 中
                    files.addAll(traversalAll(pathname));
                }
                return true;
            }
        });
        // 数组转为集合
        List<File> tempFilesList = Arrays.asList(tempFiles);
        // 把每个文件夹下的 文件和文件夹 保存到大集合中
        files.addAll(tempFilesList);
        return files;
    }
    
    /**
     * 删除文件夹和子文件夹下所有文件
     * @param file
     */
    static void deletionFile(File file) {
        ArrayList<File> files = traversalAll(file);
        // 先遍历删除 文件 和 子文件夹
        for (File deleteFile : files) {
            System.out.println(deleteFile + "---" + deleteFile.delete());
        }
    
        // 再最后删除file文件夹
        System.out.println(file + "---" + file.delete());
    }
    
    /**
     * 遍历当前目录以及子目录下所有文件
     * @param file
     * @return
     */
    static ArrayList<File> traversalFile(File file){
        ArrayList<File> tempFiles = traversalAll(file);
        ArrayList<File> files = new ArrayList<>();
        // 把大集合中的所有 文件 逐个添加到files中
        for (int i = 0; i < tempFiles.size(); i++) {
            if (tempFiles.get(i).isFile()) {
                files.add(tempFiles.get(i));
            }
        }
        return files;
    }
}

相关文章

  • File遍历或删除所有文件

    遍历指定目录下的所有文件删除指定文件夹实现方式:这里我使用了listFiles(FileFilter filter...

  • File

    1、File 遍历本地文件 2、删除文件

  • Java 使用递归遍历、删除、搜索某目录下文件

    1、使用递归遍历D:\a目录下所有的文件或文件夹 2、使用递归删除D:\a目录下所有的文件或文件夹 3、使用递归搜...

  • Linux常用命令

    命令说明cp source-file new-filecopy文件或目录rm file -rf删除文件或目录rmd...

  • Mac 常用命令

    删除指定文件:sudo rm -r -f +name.file或path.file

  • 删除文件

    删除不需要的文件 一、删除工作区或版本库文件 1. git rm --- 删除指定文件2. git ...

  • Java删除非空目录

    java.io.File.delete()不能删除非空目录,需要遍历删除

  • Shell# 遍历文件夹

    #遍历文件夹for file in dirdo echo $file echo ${file##*.} #扩展...

  • Python遍历目录删除指定文件

    Python遍历目录删除指定文件 女友U盘文件文件太乱了,好多都是无效的,需要删除以~$ 开头或以 Copy开头或...

  • Java中IO总结

    File介绍 在整个IO包了,唯一表示与文件本身有关的类就是File类。使用File类可以进行1创建或删除文件等常...

网友评论

    本文标题:File遍历或删除所有文件

    本文链接:https://www.haomeiwen.com/subject/cpcfdctx.html