目录
1. 递归:方法自己调用自己
2. 在Java中实现递归打印文件夹
递归:方法自己调用自己
1.递归的分类:
递归分为两种,直接递归和间接递归。
直接递归称为方法自身调用自己。
间接递归可以A方法调用B方法,B方法调用c方法,c方法调用A方法。
2.注意事项:
递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。
在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。
构造方法,禁止递归
3.递归的使用前提:
当调用方法时方法的主体不变,每次调用方法的参数不同,可以调用递归
在Java中实现递归打印文件夹
1.实现方法
/**
* 方法名:show01
* 返回值类型:void
* 参数列表:File file
*/
/private static void show01(File file) {
//打印被遍历的目录名称,打印文件夹
System.out.println(file);
//调用listFiles()方法,用File类型的数组来接收listFiles()方法的返回值
File[] files = file.listFiles();
//使用增强for遍历数组
for (File f : files) {
//关键if判断,如果是一个文件夹则会再从开头来一遍,除非不是文件夹才会else下打印
if (f.isDirectory()){
show01(f);
}else {
//打印文件,不是打印文件夹哦
System.out.println(f);
}
}
}
2.主方法
public static void main(String[] args) {
File f1 = new File("D:\\test");
show01(f1);
}
3.最终效果
D:\test
D:\test\a1
D:\test\a1\a1a1
D:\test\a1\a1a1\com
D:\test\a1\a1a1\com\secret.txt
D:\test\b2
D:\test\b2\b2.txt
D:\test\b2\well
D:\test\c3
D:\test\d4
D:\test\d4\wuwuwu.mp4
4.实现文件的搜索(匹配)
/**
* 方法名:show01
* 返回值类型:void
* 参数列表:File file
*/
private static void show01(File file) {
// System.out.println(file); //打印被遍历的目录名称
File[] files = file.listFiles();
for (File f : files) {
if (f.isDirectory()){
show01(f);
}else {
//关键判断,调用toString()方法再调用String类的endWith方法匹配文件的后缀
if (f.toString().endsWith(".txt")){
System.out.println(f);
}
}
}
}
}
5.文件搜索结果
D:\test\a1\a1a1\com\secret.txt
D:\test\b2\b2.txt
其他文章: