题目: 遍历出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、调用栈可能会溢出,其实每一次函数调用会在内存栈中分配空间,而每个进程的栈的容量是有限的,当调用的层次太多时,就会超出栈的容量,从而导致栈溢出。->性能
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律