黑马程序员技术交流社区

标题: 递归 [打印本页]

作者: 沟门大杏    时间: 2014-8-6 18:53
标题: 递归
现在要求输出一个给定目录中的全部文件的路径。
本程序肯定只能依靠递归的操作完成,因为在一个给定的路径下有可能还是文件夹,那么如果是文件夹的话则肯定要继续列出,重复判断。
递归:程序调用自身的编程技巧
递归就是在方法里调用自身;
在使用递归时,必须有一个明确的递归结束条件,称为递归出口。
练习:列出文件夹下所有文件(包含子文件夹内)
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这个文件夹也没有了
            }
        }
    }
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2