02 File类的方法练习——遍历文件夹
思路
- 需要遍历的文件夹 File
- 使用listFile列出下级文件及文件夹
- 判断得到的list是否为空,为空则输出当前文件夹名称
- 如果不为空,逐个判断是文件还是文件夹
- 如果是文件,输出文件名
- 如果是文件夹, 回到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步骤 } } } }