栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java之递归搜索本地磁盘

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java之递归搜索本地磁盘

递归是什么

递归是指函数的定义中函数使用自身方法。即自己调用自己

例如下面:

// 求5的阶乘5!
    int sum = 1;
    for (int i = 1; i <= 5; i++) {
      sum = sum * i;
    }
    System.out.println(sum);

我们通常会用到for循环,而在使用递归的时候,我们就可以很方便的写出结果

例如

// 求5!
  public static int recurve(int i) {
    if (i <= 1) {
      return 1;
    }

    return i * recurve(i - 1);
  }

既然可以用for循环来求出结果,那么递归有什么用呢

当然是简化重复代码的操作次数啦

面对这种简单的代码,可能还看不出递归的优点,那我们换一个代码看看!

进入今天的主题《递归遍历本地文件》

遍历文件,我们首要的是需要知道Java中获取本地磁盘

import java.io.File;

File中有一个静态方法可以获取到本地磁盘

File.listRoots();

他返回了本地有多少个磁盘

知道了这个,我们就可以开始扫描操作了

package com.demo.DeepFile;

import java.io.File;
import java.util.ArrayList;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class DeepFile {
  private File[] RootList = File.listRoots();
  private ArrayList dirname = new ArrayList<>();
  private ArrayList filename = new ArrayList<>();

  public DeepFile() {

  }

  public File[] getRootList() {
    return this.RootList;
  }

  public void startDeepFile(File[] list) {
    for (File parentRoot : list) {
      if (parentRoot.listFiles() == null) {
        this.filename.add(parentRoot.getName());
        continue;
      }
      for (File children : parentRoot.listFiles()) {
        if (children.listFiles() == null) {
          this.filename.add(children.getName());
          continue;
        }
        if (children.isDirectory()) {
          this.dirname.add(children.getPath());
          try {
            startDeepFile(children.listFiles());
          } catch (NullPointerException e) {
            e.printStackTrace();
          }
        }
      }
    }
  }

  // 将文件写入到文本
  public boolean writePath() {
    try {
      BufferedWriter bw = new BufferedWriter(new FileWriter("a.txt"));
      for (String dir : this.dirname) {
        bw.write(dir);
        bw.newLine();
        bw.flush();
      }
      BufferedWriter fbw = new BufferedWriter(new FileWriter("b.txt"));
      for (String file : this.filename) {
        fbw.write(file);
        fbw.newLine();
        fbw.flush();
      }
      bw.close();
      fbw.close();
    } catch (IOException IOE) {
      IOE.printStackTrace();
    }

    return true;
  }
}

遇到Bug需要帮助,
欢迎加wx:
xmzl1988
备注"csdn博客“
温馨提示此为有偿服务;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1040859.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号