目录

Java文件操作笔记

递归计算文件夹下所有文件的总大小

需求

需求描述:从键盘接收一个文件夹路径,获得该文件夹大小并输出到控制台。

代码实现

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import java.io.File;
import java.util.Scanner;

public class Demo934 {


    public static void main(String[] args) {
        //创建扫描器
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您要查询的文件夹的绝对路径(格式为: 盘符:\\文件夹名\\子文件夹名...)");
        //定义变量保存用户输入的文件夹路径
        String path = sc.next();
        //调用方法
        long fileSize = getFileSize(path);
        System.out.println("您查询的"+path+"文件夹下的文件大小为"+(fileSize/1024/1024)+"MB");
    }

    //创建方法获取指定文件夹下的文件大小并将其打印出来,参数为文件夹绝对路径,返回值文件的大小
    public static long getFileSize(String file) {
        //创建文件对象
        File f = new File(file);
        if (f.exists() && f.isDirectory()) {//文件夹存在
            //获取文件夹的文件的集合
            File[] files = f.listFiles();
            long count =0;//用来保存文件的长度
            for (File file1 : files) {//遍历文件集合
                if (file1.isFile()) {//如果是文件
                    count += file1.length();//计算文件的长度
                } else {
                    count += getFileSize(file1.toString());//递归调用
                }

            }
            return count;
        }else {
            System.out.println("您查询的文件夹有误");
            return 0;
        }
    }

}

控制台运行效果

C:\Program_Green\hugo_extended_0.82.0_Windows-64bit\sites\KKKPJSKEY's-Case-Archives\content\posts\Java-File-Note\1.png

C:\Program_Green\hugo_extended_0.82.0_Windows-64bit\sites\KKKPJSKEY's-Case-Archives\content\posts\Java-File-Note\2.png

递归删除文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
/**
  * @author yzh
  * @date 2018年4月26日 14:52:12
  * @description 递归删除文件夹下所有目录和文件
  */
 public static void delDir(File f) {
       if(f.isDirectory()) {// 判断是否是一个目录, 不是的话跳过, 直接删除; 如果是一个目录, 先将其内容清空.
           File[] subFiles = f.listFiles();// 获取子文件/目录
           for (File subFile : subFiles) {// 遍历该目录
               // 递归调用删除该文件: 如果这是一个空目录或文件, 一次递归就可删除. 如果这是一个非空目录, 多次
               // 递归清空其内容后再删除
              delDir(subFile);
          }
      }
      f.delete();// 删除空目录或文件
 }