Java File类练习之 遍历C盘所有文件

//代码如下:这里使用递归调用
import java.io.File;
import java.io.FileNotFoundException;

/**
 * @author aquawius
 * @create 2021-02-22 13:05
 */
public class FilesExer {
    static int allFilesNum = 0;//文件总数
    static int allDirectoryNum = 0;//文件夹总数
    static int canNOTReadNum = 0;//不可读文件夹,(里面的文件读不到)

    public static void main(String[] args) throws FileNotFoundException {
        long startTime = System.currentTimeMillis();
        FilesExer filesExer = new FilesExer();//主类实例化

        String target = "C:\\";
        File filelist = new File(target);
        System.out.println("访问目录是 " + target);

        int[] ints = filesExer.getFiles(filelist);
        System.out.println("共" + ints[0] + "个文件");
        System.out.println("共" + ints[1] + "个文件夹");
        System.out.println(ints[2] + " 个文件夹不可读");
        long endTime = System.currentTimeMillis();
        System.out.println("运行了 " + (endTime - startTime) + "ms");

    }
    public int[] getFiles(File f) throws FileNotFoundException {
        File[] files = f.listFiles();//得到第一级文件与文件夹列表
        if (f != null) {
            for (File file : files) {
                if (file.isFile()) {
                    System.out.println("File:\t\t" + file);
                    allFilesNum++;
                    continue;
                }
                if (file.isDirectory()) {
                    File[] tempList = file.listFiles(); // 获得子文件列表,很关键的一步,因为递归返回的值可能是null,这样有几层子目录,就有创建了几个Files[]子目录数组进行遍历
                    if (null == tempList){
                        canNOTReadNum++;
                    }
                    if (null != tempList) {
                        System.out.println("Directory:\t" + file);
                        allDirectoryNum++;
                        getFiles(file);
                    }
                }
            }
        } else {
            canNOTReadNum++;
        }
        return new int[]{allFilesNum, allDirectoryNum, canNOTReadNum};
    }
}

posted @ 2021-02-22 20:04  QU头  阅读(543)  评论(0编辑  收藏  举报