java 递归(Recursion)

现在要求输出一个给定目录中的全部文件的路径。

本程序肯定只能依靠递归的操作完成,因为在一个给定的路径下有可能还是文件夹,那么如果是文件夹的话则肯定要继续列出,重复判断。

递归:程序调用自身的编程技巧

递归就是在方法里调用自身;

在使用递归时,必须有一个明确的递归结束条件,称为递归出口。

 

练习:列出文件夹下所有文件(包含子文件夹内)

package july7file;

 

//利用递归遍历输出

 

import java.io.File;

 

public class Demo2 {

    public static void main(String[] args) {

        File f = new File("D:/V5");

 

        mylist(f);

    }

 

    public static void mylist(File f) {

        System.out.println(f);// 先输出一下,因为不能确定接受来的文件是否是文件夹!

        if (f.isDirectory()) {

            File[] file = f.listFiles();

            for (File file2 : file) {

                mylist(file2);

            }

        }

    }

}

 

 

练习:删除一个目录(注意:要删除目录必须删除目录下的文件和子目录)

package july7file;

 

import java.io.File;

 

public class Demo11 {

    public static void main(String[] args) {

       

        File f = new File("D:/V5");

        deleter(f);

       

        System.out.println("删除成功 !");

    }

   

    public static void deleter(File f){//程序简陋,就没有判断空引用!

        if(f.isFile()){

            f.delete();

        }else if(f.isDirectory()){

            File []file = f.listFiles();

            for (File file2 : file) {

                deleter(file2);//调用自身,递归!

                file2.delete();//删除子文件夹(内部没有文件的时候可以删除),如果这里写上f.delete();那么V5这个文件夹也没有了

            }

        }

    }

}

上一篇:JAVA 遍历文件夹下的所有文件(递归调用和非递归调用)


下一篇:Shell脚本——make命令和Makefile文件【转】