关于 文件夹 递归删除 问题,假设 文件夹嵌套很深,是否会内存溢出?

关于 文件夹 递归删除 问题,假设 文件夹嵌套很深,是否会内存溢出? 问题来了,什么样的场景,文件夹会嵌套很深?是否会 非常的有可能的出现 文件夹嵌套很深的问题?总之,如果碰到文件夹嵌套很深的情况的话,递归,绝对会溢出的,所以,我个人还是 比较反对 用递归的,,,,,,

public static void delete(File dest) {
  if (dest != null && dest.exists()) {
    if (dest.isDirectory()) {
      // stack model
      LinkedListfileList = new LinkedList<>();
      fileList.addFirst(dest);
      while (!fileList.isEmpty()) {
        File current = fileList.removeFirst();
        File[] files = current.listFiles();
        // is add current ?
        boolean addCurrent = false;
        if (files != null && files.length > 0) {
          for (File file : files) {
            if (file.isDirectory()) {
              if (!addCurrent) {
                fileList.addFirst(current);
                addCurrent = true;
              }
              fileList.addFirst(file);
            } else file.delete();
          }
        }
        if (!addCurrent) current.delete();
      }
    } else {
      dest.delete();
    }
  }
}


评论区

JFinal

2017-02-21 15:48

为啥不直接删目录? 可以不使用递归删

sruz

2017-02-21 15:57

@JFinal 如果 目录下面有文件, 不是会报错的吗? 那么就只能先 吧文件删除,再删除目录,,,,,,,,

JFinal

2017-02-21 17:56

@sruz 试下直接删目录,just do it

sruz

2017-02-22 09:14

@JFinal 额,,波哥,我是指你的 fileKit 的 删除 方法,为啥不考虑 用队列 来代替 递归?

JFinal

2017-02-22 10:46

@sruz 这段代码历史久远,很久没有看过,jfinal 内部也并未使用过,或许需要改变

sruz

2017-02-22 12:24

@JFinal Yes, 关于 删除 我是用了 堆栈模型来的,其实奥,有兴趣可以参考一下我的工具类哈 https://github.com/anmt2015/kit4j 写的不好,别嫌弃哈,有问题欢迎指出

JFinal

2017-02-22 13:20

@sruz jfinal 未来的版本会回顾大家的反馈历史,感谢支持

热门反馈

扫码入社