00022.02 目录的递归操作(包含怎么删除文件、删除文件夹等知识)

系列文章目录

前言

文件夹/目录 不同于文件

一、

文件夹/目录它不同于文件,因为文件夹中可以放文件,或下一级文件夹。
(1)获取文件夹的下一级
String[] list();得到下一级文件或目录的名称
File[] listFiles():得到下一级文件或目录的File对象
在这里插入图片描述
在这里插入图片描述
如果对下一级还要进行操作
在这里插入图片描述
在这里插入图片描述
这样就引入了我们的递归
你给我一个文件夹,我给你列出它所有的子集
在这里插入图片描述
然后调用,这样就会把所有文件给你列出来
在这里插入图片描述
在这里插入图片描述
(2)求一个目录的总大小
在这里插入图片描述

(3)删除一个包含子目录,子文件的文件夹
[注意] 演示删除操作的时候,不要勿删文件,最好新建一个文件夹来测试
删除要写得完美,也需要用到递归
在这里插入图片描述

二、代码

package com.atguigu.test01;

import java.io.File;

import org.junit.Test;

public class Test02Dir {
	@Test
	public void test04(){
		File dir = new File("d:/演示文件夹");
		deleteDir(dir);
	}
	public void deleteDir(File file){
		//(1)如果是文件夹,先把它的下一级删除
		if(file.isDirectory()){
			File[] listFiles = file.listFiles();
			//经过这个foreach循环,可以把file的所有的下一级删除
			for (File sub : listFiles) {
				deleteDir(sub);
			}
		}
		
		//文件夹就变成了空文件夹,就可以直接删
		//如果是文件也可以直接删除
		file.delete();
	}
	
	@Test
	public void test03(){
		File dir = new File("D:/尚硅谷_190513班_柴林燕_JavaSE/笔记");
		long size = getSize(dir);
		System.out.println(size);
	}
	
	public long getSize(File file){
		if(file.isFile()){
			return file.length();
		}else if(file.isDirectory()){
			long sum = 0;
			File[] listFiles = file.listFiles();
			for (File sub : listFiles) {
				sum += getSize(sub);//累加每一个下一级的大小
			}
			return sum;
		}
		return 0;
	}
	
	@Test
	public void test02(){
		File dir = new File("D:/尚硅谷_190513班_柴林燕_JavaSE/笔记");
		listAllSub(dir);
	}
	
	//listAllSub()方法的功能是列出一个文件或一个目录及它的下一级
	public void listAllSub(File dir){
		if(dir.isDirectory()){
			File[] listFiles = dir.listFiles();
			for (File sub : listFiles) {//sub可能是一个文件,也可能是一个文件夹
				listAllSub(sub);//递归:自己调用自己
			}
		}
		System.out.println(dir);
	}
	
	
	@Test
	public void test01(){
		File dir = new File("D:/尚硅谷_190513班_柴林燕_JavaSE/笔记");
		
		String[] list = dir.list();
		for (String sub : list) {
			System.out.println(sub);
		}
	}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值