File之文件夹统计

摘要

本博客主要讲述了使用File类来对文件夹进行统计

递归打印文件名

使用递归实现打印文件夹所有文件(包括文件夹)的所有名字

public class DirDemo03 {
    public static void main(String[] args) {
        File dir = new File("D:\\Java\\07_授课代码\\07_授课代码\\07_授课代码\\JavaSECode\\src");
        printFileName(dir,0);

    }
    //depth参数控制文件夹的层次关系
    private static void printFileName(File file, int depth){
        for(int i = 0; i < depth; i ++) System.out.print("-");
        System.out.println(file.getName());
        if(file != null && file.exists()){
        	//已经是文件了,也没啥好操作了,直接退出即可
            if(file.isFile()) return;
            else if(file.isDirectory()){
                File[] files = file.listFiles();
                //递归体
                for(File f : files) printFileName(f,depth + 1);
            }
        }
    }
}

程序输出结果

src
-cn
--sxt
---array2
----TestArrayCopy.java
----TestArrays.java
----TestArrayTableData.java
---collection
----TestList.java
----TestMap.java
----TestTreeMap.java
---test
----PrintFileTree.java
----Test01.java
----Test04.java
----Test05.java
----TestCalendar.java
----Testcalendar2.java
----TestDate.java
----TestDateFormat.java
----TestEnum.java
----TestIterator.java
----TestStoreData2.java
----TestWrappedClass.java
-com
--sxt
---io
----abc.txt
----dest.png
----dest.txt
----DirDemo01.java
----DirDemo02.java
----DirDemo03.java
----FileDemo01.java
----FileDemo02.java
----FileDemo03.java
----FileDemo04.java
----IOTest01.java
----IOTest02.java
----IOTest03.java
----IOTest04.java
-dongge
--CycleArray.java
--ExampleChainingHashMap.java
--ExampleLinearProbingHashMap1.java
--ExampleLinearProbingHashMap2.java
--MyArrayList.java
--MyChainingHashMap1.java
--MyLinearProbingHashMap1.java
--MyLinkedList.java
--MyLinkedList2.java
--SimpleMinPQ.java
-IO.png
-mycollection
--Node.java
--Node2.java
--Node3.java
--SxtArrayList01.java
--SxtArrayList02.java
--SxtArrayList03.java
--SxtArrayList04.java
--SxtArrayList05.java
--SxtHashMap01.java
--SxtHashMap02.java
--SxtHashMap03.java
--SxtLinkedList01.java
--SxtLinkedList02.java
--SxtLinkedList03.java
--SxtLinkedList04.java
--SxtLinkedList05.java
-prj
-Solution.java
-User2.java
-WeightedDigraph.java

递归计算长度

public class DirDemo04 {
    public static void main(String[] args) {
        File dir = new File("D:\\Java\\07_授课代码\\07_授课代码\\07_授课代码\\JavaSECode\\src");
        count(dir);
        System.out.println(length);

    }
    //维护一个全局变量,这个就是最终答案
    static int length;
    private static void count(File file){
        if(file != null && file.exists()){
            if(file.isFile()) length += file.length();
            else if(file.isDirectory()){
                File[] files = file.listFiles();
                for(File f : files) count(f);
            }
        }

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值