Java—递归

递归

1. 概述

方法中调用当前方法

2. 递归需要注意的事项

递归次数不能过多,否则内存溢出

3. 案例

3.1 获取指定目录下的文件名
public class AllDirPath {
	/*
	 * 递归打印所有子目录中的文件路径
	 */
	public static void main(String[] args) {
		// 1. 获取要查询的目录,判断该文件是否存在
		File file = new File("e:/培训");
		
		// 2. 存在,获取该目录下所有的文件
		// 3. 判断此文件是否为文件夹;是的话继续第2步,直到结束
		// 所以2和3开始需要递归;把其封装到一个方法中
		getAllFile(file);
	}

	private static void getAllFile(File file) {
		// 2. 存在,获取该目录下所有的文件
		// 3. 判断此文件是否为文件夹;是的话继续第2步,直到结束
		if(file.exists()){
			File[] listFiles = file.listFiles();
			for(File f: listFiles){
				if(f.isDirectory()){
					getAllFile(f);
				}else{
					System.out.println(f.getName());
				}
			}
		}else{
			System.out.println("要查询的目录还不存在,请先去创建!");
		}
	}
}
3.2 删除指定目录
public class DelDir {
	public static void main(String[] args) {
		// 获取指定要删除目录
		File file = new File("e:/peixun");
		deleteDir(file);
	}

	public static void deleteDir(File file) {
		// 先进行判断是否为文件夹
		if(file.isDirectory()){
			File[] listFiles = file.listFiles();
			for (File tempFile : listFiles) {
				deleteDir(tempFile);
			}
			
			// 直至文件夹为空时,删除文件夹
			boolean delete = file.delete();
			System.out.println(file.getName() + "..." + delete);
		}else{
			// 不是文件夹直接删
			boolean delete = file.delete();
			System.out.println(file.getName() + "..." + delete);
		}
	}
}
posted @ 2020-11-14 16:36  娜豆  阅读(90)  评论(0编辑  收藏  举报