递归的一些方法使用:深度遍历路径中的所有文件和目录,删除一个有文件的文件夹

来源:互联网 发布:樱井知香迅雷种子全集 编辑:程序博客网 时间:2024/06/10 00:09
package file;


import java.io.File;
/*递归练习
 * 1定义一个listALl方法
 * 2删除一个有文件的文件夹
 */


public class DiguiDemo {


public static void main(String[] args) {
// TODO 自动生成的方法存根
File file=new File("E:\\小说文学");
listAll(file, 0);
File files=new File("E:\\小说文学\\新建文件夹 (3)");
removedir( files);


}
//删除一个带有文件的文件夹
private static void removedir(File file) {
File[]f=file.listFiles();
for(File s:f){
//如果file中的文件是目录就递归
if(s.isDirectory())
removedir( file);
else
s.delete();
}
file.delete();

}
//自定义的listAll方法,遍历抽象路径中的所有文件和目录
private static void listAll(File file,int level) {
// 打印当前路径和递归时候得到的路径的绝对路径值
System.out.println(getSpace(level)+"dir:"+file.getAbsolutePath());
level++;
File[]f=file.listFiles();
for(int x=0;x<f.length;x++){
if(f[x].isDirectory()){
//System.out.println(getSpace(level)+f[x].getAbsolutePath());
listAll(f[x],level);}
else
System.out.println(getSpace(level)+f[x].getAbsolutePath());
}
}
//一个计数器,记录每遍历一次level就加一,方便阅览
private static String getSpace(int level) {
// TODO 自动生成的方法存根
StringBuilder s=new StringBuilder();
s.append(" |");
for(int x=0;x<level;x++)
s.insert(0, " ");
return s.toString();
}

}
0 0