读书人

用递归列出跟删除文件的所有目录

发布时间: 2013-07-21 21:55:43 作者: rapoo

用递归列出和删除文件的所有目录
public static int factorial(int number){ int result; if(number == 1) //递归出口 { result = 1; } else { result = number * factorial(number - 1); } return result;}

?

public static void deleteAll(File file){ if(file.isFile() || file.list().length == 0) //递归出口 { file.delete(); } else { File[] files = file.listFiles(); for(File f : files) { deleteAll(f); f.delete(); //删除最后的空目录 } }}

?

列出当前目录及子目录的所有文件及目录

?

/*粗略的版本*/public static void listAll(File file){          //递归出口,file为文件或空目录时打印出filename        if(file.isFile() || file.list().length == 0)            {            System.out.println(file.getName());        }        else        {               //先打印父目录                System.out.println(file.getName());                File[] files = file.listFiles();                for(File f : files)                {                            listAll(f);                }        }}

?

/*带Tab格式的排序的版本*///用于判断目录或文件所处的层次private static int time;public static void listAll(File file){        if(file.isFile() || file.list().length == 0)        {                System.out.println(getTabs(time) + file.getName() + (file.isFile() ? "" : "\\"));        }        else        {                System.out.println(getTabs(time) + file.getName() + "\\");                File[] files = file.listFiles();                sort(files);            for(File f : files)                {                        time++;                        listAll(f);                        time--;                }        }}//判断需要加多少 tab的方法private static String getTabs(int time){        StringBuffer buffer = new StringBuffer();      for(int i = 0; i < time; i++){        buffer.append("\t");}    return buffer.toString();}// 整理文件,使得目录排在文件之前private static void sort(File[] files){        ArrayList<File> sorted = new ArrayList<File>();        // 寻找到所有的目录        for (File f : files)        {                if (f.isDirectory())                 {                        sorted.add(f);                }        }    // 寻找到所有的文件        for (File f : files)        {            if (f.isFile())                {                        sorted.add(f);                }        }       files = sorted.toArray(new File[files.length]);}

?

?

?

?

读书人网 >编程

热点推荐