/*
* 递归:
* 定义:函数自己调用自己
* 前提:函数总必须存在结束递归的条件,否则递归会称为死循环。
*
*
*/
package com.michael.lin;
import java.io.File;
public class Demo07 {
public static void main(String[] args){
listFiles(new File("G:\\2015java基础班33期"));
listFiles2(new File("G:\\2015java基础班33期"), "|");
}
//1.使用递归调用文件的中的所有文件(包括子孙文件)
public static void listFiles(File dir){
//1.列出当前目录所有的文件夹
File[] files = dir.listFiles();
//2遍历所有的文件(夹)
for(File file : files){
if(file.isFile()){
System.out.println("---" + file.getName());
}else if(file.isDirectory()){
System.out.println("-" + file.getName()+":");
listFiles(file);
}
}
}
//2.使用递归函数列出文件中的所有子孙目录,不同级别的目录使用定义格式分级
public static void listFiles2(File dir, String space){
//1.获得氮气目录的所有文件对象
File[] files = dir.listFiles();
//2.遍历所有的饿文件对象
for(File file : files){
if(file.isFile()){
System.out.println(space+file.getName());
}else if(file.isDirectory()){
System.out.println(space+file.getName());
listFiles2(file, "|--"+space);
}
}
}
//3.使用递归删除非空的文件夹
public static void deleteDeir(File dir){
File[] files = dir.listFiles();
for(File file : files){
if(file.isFile()){
file.delete();
}else if(file.isDirectory()){
deleteDeir(file);
}
}
dir.delete();
}
}