package ioStudy; import java.io.File; /** * 递归--->方法自己调用自己 * 目标: * 打印子孙级目录 * 打印文件名称 * @author Lucifer */ public class TestDirDemo3 { public static void main(String[] args) { /*主方法*/ File src = new File("D:/workspace/practice/main/java/collection"); //调用方法 printName(src,0); } /*调用方法,打印子孙级目录和文件的名称*/ public static void printName(File src, int deep){ //为了彰显层次感加循环输出 for (int i = 0; i < deep; i++){ System.out.print("-"); } //直接打印名称--->自己调用自己 System.out.println(src.getName()); //判断执行什么操作---文件、文件夹 if (null == src || !src.exists()){ /*递归头*/ //什么都不做,直接返回 return; }else if (src.isDirectory()){ //拿出下一级 for (File f : src.listFiles()){ //打印出名字 /*递归体*/ printName(f,deep + 1); //这样比较没有层次感,加形参 } } } } /* 步骤: 1.传一个路径 2.打印名称 3.判断是否有下一级 有继续打印 没有直接返回结束方法 */
DirCount类:
package ioStudy; import java.io.File; /** * 使用面向对象的方法 * 统计文件夹的大小 * ---将方法进行封装处理 * @author Lucifer */ public class DirCount { /*定义属性*/ //大小 private long len; //文件夹路径 private String path; //查看文件个数 private int fileSize; //文件夹的个数--->目录个数 private int dirSize = -1; //源数据--->根据路径构造File对象 private File src; /*构造器*/ public DirCount(String path) { this.path = path; this.src = new File(path); //构件 count(this.src); } //生成一个getLen的方法 public long getLen() { return len; } //生成属性相应的get方法 public int getFileSize() { return fileSize; } public int getDirSize() { return dirSize; } /*统计大小处理 ---新写方法*/ private void count(File src){ //获取大小 if (null != src && src.exists()){ if (src.isFile()){ //获得大小 len += src.length(); //如果是文件,fileSize自增 this.fileSize++; }else { //如果不是文件则fileDir++ this.dirSize++; //子孙级--->循环打印 for (File f : src.listFiles()){ count(f); } } } } /* 1.如果是文件则直接获得大小 2.如果是文件夹则通过子孙级获得大小 */ }
Test方法:
package ioStudy; public class TestDirCount { //主方法 public static void main(String[] args) { /*实例化对象*/ DirCount dir = new DirCount("D:/workspace/practice/main/java/collection"); /*对src统计大小*/ System.out.println(dir.getLen() + "--->" + dir.getFileSize() + "--->" + dir.getDirSize()); //显示13个文件夹是因为包含了自身 /*实例化对象*/ DirCount dir2 = new DirCount("D:/workspace/practice/main/java/collection/map"); /*对src统计大小*/ System.out.println(dir2.getLen() + dir2.getFileSize() + "--->" + dir2.getDirSize()); //同样是包含了自身 } }
如何创建文件夹--->mkdir和mkdirs两种方法
统计下级File,使用listFile方法结合之前的递归方法可以实现