ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

5.6Java File对象使用递归打印子孙级目录以及文件的名称

2021-05-06 19:36:02  阅读:159  来源: 互联网

标签:src Java 5.6 打印 --- 文件夹 File public


5.6Java File对象使用递归打印子孙级目录以及文件的名称

File对象使用递归打印子孙级目录

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.判断是否有下一级
   有继续打印
   没有直接返回结束方法
*/

File对象打印文件夹的大小---封装方法

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()); //同样是包含了自身
  }
}

小结:

  1. 如何创建文件夹--->mkdir和mkdirs两种方法

  2. 统计下级File,使用listFile方法结合之前的递归方法可以实现

  3.  

标签:src,Java,5.6,打印,---,文件夹,File,public
来源: https://www.cnblogs.com/JunkingBoy/p/14736474.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有