(26)递归

比较简单的地柜例子就是递归求阶乘,这里使用输出目录结构作为例子,下面其实就是若干个例子:

递归:函数直接或者间接的调用函数自身。

递归的使用前提:必须要有条件的情况下调用,否则就是一个死循环

需求:流出一个文件夹的子孙文件和目录.

需求:流出目录结构。第一级0个空格,第二级2个空格,类推

需求:列出目录的属性结构

需求4:删除一个非空的文件夹。

 1 //删除一个非空的文件夹
 2     public static void deleteDir(File dir)
 3     {
 4         File[] files = dir.listFiles();    //列出所有子文件
 5         for (File file : files)
 6         {
 7             if(file.isFile())
 8             {
 9                 file.delete();
10             }
11             else if(file.isDirectory())
12             {
13                 deleteDir(file);
14             }
15         }
16         dir.delete();
17     }
18     
19     
20     //用空格表示出目录结构
21     public static void listFiles3(File dir, String space)    //space 存储的是空格
22     {
23         File[] files = dir.listFiles();    //列出所有的子文件
24         for (File file : files)
25         {
26             if(file.isFile())
27                 System.out.println(space+file.getName());
28             else if(file.isDirectory())
29             {
30                 System.out.println(space+file.getName());
31                 listFiles3(file, "|   "+space);
32             }
33         }
34     }
35     
36     
37     //用空格表示出目录结构
38     public static void listFiles2(File dir, String space)    //space 存储的是空格
39     {
40         File[] files = dir.listFiles();    //列出所有的子文件
41         for (File file : files)
42         {
43             if(file.isFile())
44                 System.out.println(space+file.getName());
45             else if(file.isDirectory())
46             {
47                 System.out.println(space+file.getName());
48                 listFiles2(file, space+"  ");
49             }
50         }
51     }
52     
53     //递归的列出 子孙文件和目录
54     public static void listFiles1(File dir)    //space 存储的是空格
55     {
56         File[] files = dir.listFiles();    //列出所有的子文件
57         for (File file : files)
58         {
59             if(file.isFile())
60                 System.out.println("文件名:"+file.getName());
61             else if(file.isDirectory())
62             {
63                 System.out.println("文件夹:"+file.getName());
64                 listFiles1(file);
65             }
66         }
原文地址:https://www.cnblogs.com/OliverZhang/p/6026759.html