目录递归操作:列出所有子目录文件,计算总大小,删除全部子目录

文件夹/目录它不同于文件,因为文件夹中可以放文件,或下一级文件夹。

  • (1)获取文件夹的下一级
  • String[] list();得到下一级文件或目录的名称
  • File[] listFiles():得到下一级文件或目录的File对象
  • (2)求一个目录的总大小
  • (3)删除一个包含子目录,子文件的文件夹
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:\\idea\\ideaworkspace\\java基础\\src\\java基础");
		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:\\idea\\ideaworkspace\\java基础\\src\\java基础");
		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:\\idea\\ideaworkspace\\java基础\\src\\java基础");
		
		String[] list = dir.list();
		for (String sub : list) {
			System.out.println(sub);
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值