递归遍历文件

小工具


⚪递归遍历盘文件夹
⚪计算文件数量

  • 或取到所有的盘符
File[] roots = File.listRoots();  
File d = roots[0];//找到D盘目录
  • 获取到当前目录下的子目录或文件
File[] files = file.listFiles();  //如果是文件 没有子结构 将会返回null

在这里插入图片描述
C:$Recycle.Bin 最开始的是回收文件
在这里插入图片描述在这里插入图片描述

package com.gec.file;

import java.io.File;
import java.util.Arrays;

import org.junit.Test;

public class TestFile {

	/*
	 * 抛出异常  ,当前这个方法抛出异常给上级,谁调用该方法,谁处理该异常      处理异常使用try{}catch(Exception e){}
	 */
	@Test
	public void getFile() throws Exception {
		//1.创建文件对象
		//File file = new File("D:\\IO\\File");
		//File中的separator静态常量,是一个自适应的斜线
		File file = new File("D:"+File.separator+"IO"+File.separator+"File");
		//2.判断该目录或文件是否存在
		if(!file.exists()) {
			//不存在则创建目录
			file.mkdirs();  //创建整个目录,没有则创建,有就不创建
			//file.createNewFile();  //创建文件一定在已有目录下创建文件
		}
		//在上级目录下创建一个新的文件
		File newFile = new File(file, "test1.txt");
		boolean flag = newFile.createNewFile();
		if(flag) {
			System.out.println("文件已创建成功!");
		}else
			System.out.println("文件创建失败....");
	}
	
	@Test
	public void deleteFile() {
		//创建文件对象,获取到文件夹
		File file = new File("D:"+File.separator+"IO"+File.separator+"File","test.txt");
		System.out.println(file.getName());				//文件或目录的名称
		System.out.println(file.getPath());				//获取到相对路径
		System.out.println(file.getAbsolutePath());   //获取到绝对路径
		//删除指定文件或文件目录
		if(file.delete())
			System.out.println("删除文件成功!");
		else
			System.out.println("文件不存在,删除文件失败.....");
	}
	
	/*
	 * 查找所有的文件
	 */
	@Test
	public void findFile() {
		//或取到所有的盘符
		File[] roots = File.listRoots();  
		System.out.println(Arrays.toString(roots));
		//找到D盘目录
		File d = roots[0];
		//获取到d盘下所有的文件和数量
		long num = showFile(d);
		System.out.println("D盘中所有文件的数量为:"+num);
	}

	//查找文件方法
	private long showFile(File file) {
		long num = 0;
		//获取到当前目录下的子目录或文件
		File[] files = file.listFiles();  //如果是文件 没有子结构 将会返回null
		//判断该数组是否为null
		if(files!=null) {
			//循环所有目录
			for (File file2 : files) {
				//判断该file2是否为目录
				if(file2.isDirectory()) {
					//自己调用自己,查询当前文件夹的下级文件,如果子文件中还有文件夹,继续调用,简称递归
					num += showFile(file2);
				}else {
					num++;   //如果是文件,就不需要遍历
					System.out.println(file2.getParent()+File.separator+file2.getName());
				}
			}
		}
		return num;
	}
}

删除文件夹

千万要注意

删错了后果自负

带前不带后

  • 文件夹里只有文件的情况

  • 文件夹还有文价夹的情况

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值