码迷,mamicode.com
首页 > 编程语言 > 详细

Java中递归的优缺点,Java写一个递归遍历目录下面的所有文件包括子文件夹里边的文件。

时间:2019-03-23 17:23:59      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:使用   目录   存在   优点   pre   自身   main   最大   文件名   

题目: 遍历出aaa文件夹下的文件

首先分析思路:

  1、首先判断这个文件夹是否为文件,通过isFile()函数可以判断是否为文件。

  2、然后通过isDirectory判断是否为目录。

  3、如果是目录就使用递归遍历目录

  代码如下:

  

 1 import java.io.File;
 2 
 3 public class ZuoYe {
 4     public static void main(String[] args) {
 5         //创建file对象
 6         File f=new File("d://新建文件夹");
 7         //用listFiles()方法遍历文件夹
 8         File[] listFiles = f.listFiles();
 9         fun(listFiles);
10     }
11     public static void fun(File[] file){
12         //如果文件夹为空就直接退出
13         if(file==null){
14             return;
15         }
16         //遍历file
17         for(File f1:file){
18             //判断如果文件不是文件夹就直接输出文件名
19             if(f1.isFile()){
20                 System.out.println(f1.getName());
21             }
22             //如果文件是个文件夹就继续通过调用自己遍历文件夹
23             else if(f1.isDirectory()){
24                 fun(f1.listFiles());
25             }
26         }
27     }
28 }

总结:递归思想也就是自己调用自己,其实还是重复使用,相当于先遍历外层的文件夹,然后文件夹里边还存在文件夹,所有就调用自己的方法再次遍历内部的文件夹而已。

递归的优点:最大的就是简单

递归的缺点:

  1、递归由于是函数调用自身,而函数调用是有时间和空间的消耗的:每一次函数调用,都需要在内存栈中分配空间以保存参数、返回地址以及临时变量,而往栈中压入数据和弹出数据都需要时间。->效率低

  2、因为是调用自己,所以很多的计算都是重复的。--->效率

  3、调用栈可能会溢出,其实每一次函数调用会在内存栈中分配空间,而每个进程的栈的容量是有限的,当调用的层次太多时,就会超出栈的容量,从而导致栈溢出。->性能

 

Java中递归的优缺点,Java写一个递归遍历目录下面的所有文件包括子文件夹里边的文件。

标签:使用   目录   存在   优点   pre   自身   main   最大   文件名   

原文地址:https://www.cnblogs.com/yanpingping/p/10584676.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!