File遍历以及FilenameFilter的使用

首先遍历来一下,这里分为递归与不递归的两种操作:

非递归操作

//非递归复用了 LinkedList
    private static void NotRecursive() {
        LinkedList<File> list=new LinkedList<>();
        int folderNum=0;
        int fileNum=0;

        File file=new File("E:/动脑");
        if(file.exists()){
            File[] fs=file.listFiles();
            for(File f1:fs){
                if(f1.isDirectory()){
                    folderNum++;
                    list.add(f1);
//                    System.out.println("Folder Name:"+f1.getName());
                }else{
                    fileNum++;
                    System.out.println("File Name:"+f1.getName());
                }
            }
            File f2;
            while(!list.isEmpty()){
                f2=list.removeFirst();
                fs=f2.listFiles();
                for(File f1:fs){
                    if(f1.isDirectory()){
                        folderNum++;
                        list.add(f1);
//                        System.out.println("Folder Name:"+f1.getName());
                    }else{
                        fileNum++;
                        System.out.println("File Name:"+f1.getName());
                    }
                }
            }
        }else{
            System.out.println("非文件目录");
        }
        System.out.println("FileNum: "+fileNum+"   FolderNum: "+folderNum);
    }

递归操作:并筛选出MP3格式的文件

private static LinkedList<File> Recursive(String path) {              LinkedList<File> list=new LinkedList<>();        File file=new File(path);        if(file.exists()){            File[] fs =file.listFiles();            for(File f1:fs){                if(f1.isDirectory()){                    Recursive(f1.getAbsolutePath());                }else{                    if(f1.getName().endsWith("mp3"))                    list.add(f1);                    System.out.println("File Name:"+f1.getName());                }            }        }else{                    }        return list;    }
public class DirList {

    public static void main(String[] args) {
        String path="E:/动脑";
        File file=new File(path);
        String[] fs=file.list(new FilenameFilter() {
            private String tag=".mp3";
            @Override
            public boolean accept(File dir, String name) {
                return name.endsWith(tag);
            }
        });
        long l=0;
        Arrays.sort(fs);
        for(String s1:fs){
            System.out.println(s1);
            l+=new File("E:/动脑/"+s1).length();
        }

        System.out.println(l/1024/1024);
    }

}

原文地址:https://www.cnblogs.com/zzl521/p/8987358.html

时间: 2024-07-31 16:55:58

File遍历以及FilenameFilter的使用的相关文章

【转】File类应用 - FilenameFilter 和 FileFilter

FilenameFilter & FileFilter FilenameFilter 和 FileFilter 都是用来过滤文件,例如过滤,以.jpg或者.java结尾的文件,通过看他们的源码:通过使用File类中String[] list(FilenameFilter filter)或者public File[] listFiles(FileFilter filter)方法,把FilenameFilter或者FileFilter接口对象作为参数传入,通过实现接口里面的 boolean acce

File遍历查找

获取当前目录下的文件和子文件夹 System.out.println("-------------list()方法--------------"); File dir2=new File("d:\\"); String[] list = dir2.list(); for (String string : list) { System.out.println(string); } 获取当前目录下的pdf文件 String[] list=dir.list(new Fil

JavaSE8基础 File FilenameFilter 筛选出指定后缀名的文件

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0) code: package jizuiku0; import java.io.File; import java.io.FilenameFilter; /* * @version V17.09 */ public class Filter { public static void main(String[] args) { //

java-IO流(File对象-深度遍历指定目录下的文件夹和文件)

需求:遍历这个树状结构 File(String pathname) '\\'为了转义'\' // 通过抽象路径pathname 创建一个新的文件或者目录 File parent = new File("E:\\Test\\aa"); // exists 判断文件或目录是否存在:存在为true if(!parent.exists()){ // mkdirs 创建多级目录 parent.mkdirs(); } import java.io.File; public class Test {

java File类

今天我要总结一下java File类.这个是一个很重要的类. 首先是我画的思维导图. 还写了一些自己写的代码. /** * Date : 2017/6/24 * Author : Hsj * Description : */ public class Demo { /** * File(pathname)表示文件或文件夹路径 * File(String parent,child); * File(File parent,child); */ @Test public void fun() { /

java 19 -14 File类的判断并输出案例

1 package zl_file; 2 3 import java.io.File; 4 import java.io.FilenameFilter; 5 6 /* 7 需求: 判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出此文件名称 8 分析: 9 两种方式: 10 A:先获取所有的,然后遍历的时候,依次判断,如果满足条件就输出. 11 a:封装h判断目录 12 b:获取该目录下所有文件或者文件夹的File数组 13 c:遍历该File数组,得到每一个File对象,然后判断 14

IO流(一):File和递归

一.File (一)概述 1.File: 1)文件和目录(文件夹)路径名的抽象表示形式 2)注意: 可以表示文件夹与文件,即路径与文件 抽象概念,即路径与文件是否存在不确定 2.构造方法 1)File(String pathname):根据一个路径得到File对象 File file = new File("E:\\demo\\a.txt"); 2)File(String parent, String child):根据一个目录和一个子文件/目录得到File对象 File file2

环境变量,属性文件,文件基础操作,目录基础操作,遍历指定后缀名文件

环境变量和属性 环境变量相关: 1.得到某个/所有环境变量的值 2.设置环境变量的值 3.列出全部系统属性名 import java.util.Enumeration; import java.util.Map; import java.util.Map.Entry; import java.util.Properties; public class Environment { public static void main(String[] args) { // TODO Auto-gener

File总结_day19

File类总结:文件和目录(文件夹)路径名的抽象表示形式,它仅仅是个路径名,存在与不存在,看接下来的操作.反正构造后,就是一个文件名. 硬盘上除了文件夹,就是只有文件.抽象路径名中第一个名称之后的每个名称表示一个目录:最后一个名称既可以表示目录,也可以表示文件.空 抽象路径名没有前缀和名称序列. 构造方法:    File(String pathname):根据一个路径得到File对象    File(String parent, String child):根据一个目录和一个子文件/目录得到F