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

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

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

时间: 2024-10-06 00:14:28

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

JAVA之File类 获取一个目录下的所有文件夹和文件,包括子文件夹和子文件

package ioTest.io3; import java.io.File; /* * 获取一个目录下的所有文件夹和文件,包括子文件夹和子文件 . * 并将文件夹和文件名称打印在控制台上面.并且要显示文件目录的层级 * 注:运用了递归的算法. */ public class FileDemo3 { public static void main(String[] args) { File dir=new File("F:\\黑马学习日程\\"); //File dir=new Fi

oc 文件操作,查看目录下所有文件包括子文件夹内包含的所有文件,循环遍历递归

FileManager.m #import "FileManager.h" @implementation FileManager + (void)showFiles:(NSString *)path;{ // 1.判断文件还是目录 NSFileManager * fileManger = [NSFileManager defaultManager]; BOOL isDir = NO; BOOL isExist = [fileManger fileExistsAtPath:path i

java 打印流 递归复制子文件子文件夹 不同编码文件复制到同一文件中 序列化流反序列化流

package com.swift.jinjie; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.PrintStream; /*从键盘输入一个文件夹路径,利用打印流将该文件夹下的所有文件(包括子文件夹)复制到D盘下temp文件夹下.*/ public class PrintAllT

Java中新建子文件夹和新建文件

File file = new File("地址"); file.mkdirs(); //新建文件夹,当没有父文件夹时,但是不会自动创建父文件夹 file.mkdirs(); //新建文件夹,当没有父文件夹时,但是会创建父文件夹, //如果文件不存在,则创建一个新文件if(!file.isFile()){    file.createNewFile();} Java中新建子文件夹和新建文件

Java 遍历指定文件夹及子文件夹下的文件

/** * 遍历指定文件夹及子文件夹下的文件 * * @author testcs_dn * @date 2014年12月12日下午2:33:49 * @param file 要遍历的指定文件夹 * @param collector 符合条件的结果加入到此List<File>中 * @param pathInclude 路径中包括指定的字符串 * @param fileNameInclude 文件名称(不包括扩展名)中包括指定的字符串 * @param extnEquals 文件扩展名为指定字

Android程序函数 将assets文件夹下的文件复制到手机的sd卡中(包括子文件夹)

最近在做个功能是将asset文件夹下的所有文件(包括子文件)全部拷贝出来到指定目录下.所用的方法无非是用AssetManager.但是这里有个问题是也要讲子文件夹和子文件都要拷贝出来.到网上Google了下,也到baidu搜索了下,发现了很多类似问题.但好像都有问题.显然只能做到将asset直接目录下的文件拷贝出来,但子文件夹拷贝不出来,而且,碰到文件夹,会抛异常.无奈自己只好动手写了个.如下: private void CopyAssets(String assetDir,String dir

复制一个文件夹下所有的文件和子文件夹内容到另一个文件夹

PS:涉及单个文件复制.目录的创建.递归的使用 public class CopyAllFiles {  public static void main(String[] args) {   copyDirectory("F:\\XXX", "F:\\YYY");  }    //复制文件的方法  public static void copyFiles(File sourceFile, File targetFile) {   //声明   BufferedInp

PHP遍历一个文件夹下所有文件和子文件夹的函数

<?phpfunction my_dir($dir) {    $files = array();    if(@$handle = opendir($dir)) { //注意这里要加一个@,不然会有warning错误提示:)        while(($file = readdir($handle)) !== false) {            if($file != ".." && $file != ".") { //排除根目录: 

Java与Python统计文件夹及子文件夹下文件个数

package dang; import java.io.File; /** * @ClassName: FileCount * @Description: TODO() * @author: dangjinhu * @date: 2018年11月1日 下午2:24:58 */ public class FileCount { public static void main(String[] args) { int[] array = new int[]{0,0}; print(new File