02 File类的方法练习——遍历文件夹

思路

  1. 需要遍历的文件夹 File
  2. 使用listFile列出下级文件及文件夹
  3. 判断得到的list是否为空,为空则输出当前文件夹名称
  4. 如果不为空,逐个判断是文件还是文件夹
  5. 如果是文件,输出文件名
  6. 如果是文件夹, 回到2步骤

从第2到第6封装成方法,使用递归的思想遍历。

代码

import java.io.File;
public class ListFile
{	
	static int COUNT = -1;//文件序号,由于首次传入文件夹也会导致COUNT加1
	static int SPACE = 0;//文件夹大小
	public static void main(String[] args){
		//1.需要遍历的文件夹 File
		//2.使用listFiles列出下级文件及文件夹
		//3.判断得到的list是否为空,为空则输出当前文件夹名称
		//4.如果不为空,逐个判断是文件还是文件夹
		//5.如果是文件,输出文件名
		//6.如果是文件夹, 回到2步骤

		//1.需要遍历的文件夹
		File directory = new File("D:\\遍历测试文件夹");
		//调用遍历方法
		bianLi(directory);
		System.out.println("文件夹\""+directory.getAbsolutePath()
			+"\"已遍历完成!文件夹大小为:"+SPACE+"B,包含了文件及文件夹共"+COUNT-1+"个!");
		

	}

	//遍历方法
	public static void bianLi(File directory){
		COUNT++;
		System.out.println(COUNT+":"+directory.getAbsolutePath()+"  非空文件夹");
		//2.列出下级文件及目录
		File[] fileList = directory.listFiles();
		//3.判断得到的list是否为空,为空则输出当前文件夹名称
		if(fileList.length == 0){
			COUNT++;
			System.out.println(COUNT+":"+directory.getAbsolutePath()+"  空文件夹");
			return;
		}
		//4.如果不为空,逐个判断是文件还是文件夹
		for(File file : fileList){
			//5.如果是文件,输出文件名
			if(file.isFile()){
				COUNT++;
				SPACE += file.length();
				System.err.println(COUNT+":"+file.getAbsolutePath()+"  文件");
			}else{//6.1 如果是文件夹 
				bianLi(file);//6.2 回到2步骤
			}
		}
	}
}

  

演示

posted @ 2019-11-21 16:30  Scorpicat  阅读(226)  评论(0编辑  收藏  举报