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

首先分析思路:

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

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

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

  代码如下:

  

 import java.io.File;

 public class ZuoYe {
public static void main(String[] args) {
//创建file对象
File f=new File("d://新建文件夹");
//用listFiles()方法遍历文件夹
File[] listFiles = f.listFiles();
fun(listFiles);
}
public static void fun(File[] file){
//如果文件夹为空就直接退出
if(file==null){
return;
}
//遍历file
for(File f1:file){
//判断如果文件不是文件夹就直接输出文件名
if(f1.isFile()){
System.out.println(f1.getName());
}
//如果文件是个文件夹就继续通过调用自己遍历文件夹
else if(f1.isDirectory()){
fun(f1.listFiles());
}
}
}
}

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

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

递归的缺点:

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

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

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

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

  1. php遍历一个文件下的所有文件和子文件夹下的文件

    function AllFile($dir){ if($dh = opendir($dir)){ while (($file = readdir($dh)) !== false){ if($file ...

  2. C# 递归查找文件夹下所有文件和子文件夹的所有文件

    方法实现 public class DirectoryAllFiles { static List<FileInformation> FileList = new List<File ...

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

    package com.swift.jinjie; import java.io.BufferedInputStream; import java.io.File; import java.io.Fi ...

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

    Java 遍历指定文件夹及子文件夹下的文件 /** * 遍历指定文件夹及子文件夹下的文件 * * @author testcs_dn * @date 2014年12月12日下午2:33:49 * @p ...

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

    最近在做个功能是将asset文件夹下的所有文件(包括子文件)全部拷贝出来到指定目录下.所用的方法无非是用AssetManager.但是这里 有个问题是也要讲子文件夹和子文件都要拷贝出来.到网上Goog ...

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

    File file = new File("地址"); file.mkdirs(); //新建文件夹,当没有父文件夹时,但是不会自动创建父文件夹 file.mkdirs(); // ...

  7. C#获取文件夹内文件包括子文件(递归)实例

    这个在我工作上,写了一次工具项目,用上的. static ArrayList FileList = new ArrayList();//这个必须写在方法外, static ArrayList GetA ...

  8. python 小练习之删除文件夹下的所有文件,包括子文件夹中的文件

    先屡一下思路 一步步怎么实现 1  要求是要删除所有文件(只是删除文件 而不是文件夹),所以 我们肯定要遍历这个文件目录 (for  in遍历) 2 每遍历一个元素时(文件),我们要判断该元素的属性是 ...

  9. c++ 输出文件夹(不包括子文件夹)中后缀文件

    参考:_finddata_t结构体用法 - 麒麒川的博客 - CSDN博客 准备知识部分: MessageBox MessageBox function (winuser.h) | Microsoft ...

随机推荐

  1. redis 连接超时。。

    在虚拟机安装后.在项目中加入redis 想测试一下功能 然后在物理机死活连不上. 1.用物理机ping 虚拟机的IP 通.... 2.然后.把redis.conf 里面bind 0.0.0.0 依然没 ...

  2. tkinter menu

    python] view plain copy '''''Tkinter教程之Menu篇''' '''''1.创建一个简单的Menu''' # 添加菜单hello和quit,将hello菜单与hell ...

  3. 13.纯 CSS 创作一个冒着热气的咖啡杯

    原文地址:https://segmentfault.com/a/1190000014734039 感想:伪元素::before ::after 真的很强大,动画也是. HTML代码: <div ...

  4. apidoc 生成Restful web Api文档

    在服务器项目开发过程中,总会牵扯到接口文档的设计与编写,之前使用的都是office写一个文档,不够直观.下面介绍一种工具生成Apidoc.,该工具是Nodejs的模块,请务必在使用前安装好nodejs ...

  5. JavaWeb学习篇--Filter过滤器

    Filter过滤器简介 ServletAPI中提供了一个Filter接口,开发web应用时,如果编写的 java 类实现了这个接口,则把这个java类称之为过滤器Filter. WEB服务器每次在调用 ...

  6. Mybatis十( mybatis其他使用)

    1.批量执行 public void addUser(User user); <insert id="addUser" parameterType="model.U ...

  7. Mybatis六(SSM框架)

    SSM三大框架整合详细教程(SPRING+SPRINGMVC+MYBATIS) 使用 SSM ( Spring . SpringMVC 和 Mybatis )已经有三个多月了,项目在技术上已经没有什么 ...

  8. 转载:approxPolyDP函数

    本文转载http://blog.csdn.net/qq_18343569/article/details/47999257 1.approxPolyDP函数 函数的作用: 对图像轮廓点进行多边形拟合 ...

  9. django之relacted.py(探秘django的关联field)

    生成model类对象时,传入的每个field对象都会调用其contribute_to_class函数,生成对应的属性. def contribute_to_class(self, cls, name, ...

  10. 白鹭引擎 - 资源文件的加载 ( RES, loadConfig, loadGroup )

    class Main extends egret.DisplayObjectContainer { public constructor() { super(); this.addEventListe ...