Java递归实现文件的删除

啥也不说,直接贴代码:

方式一:

public class TestDelFile {
	
	//删除文件的函数
	public boolean del(File file){
		//获取当前文件夹下的所有文件及文件夹
		File[] fArr = file.listFiles();
		boolean flag = true;
		//判断是否有子文件,有子文件递归调用
		if(fArr.length > 0){
			//判断是否为文件夹
			if(file.isDirectory()){
				//递归调用删除文件夹
				for (File file2 : fArr) {
					flag = del(file2);
					//如果递归中删除失败,返回false
					if(!flag){
						return flag;
					}
				}
			}
		}
		//没有子文件,直接删除
		return file.delete();
		
	}

	public static void main(String[] args) throws IOException {
		
		//1.创建一个文件,连同创建该文件的上级文件夹
		TestDelFile tdf = new TestDelFile();
		File file = new File("E:/你好/吗/少年/哈哈哈/a.txt");
		if(!file.exists()){
			//文件不存在,创建文件
			System.out.println(file.mkdirs()?"文件创建成功":"文件创建失败");
		}
		//2.删除该文件夹及该文件夹下的所有文件和文件夹
		File file2 = new File("E:/你好/吗");
		boolean b1 = tdf.del(file2);
		System.out.println(b1?"删除成功":"删除失败");
		
	}

}

方式二、

public class TestDelFile {
	
	//删除文件的函数
	private static boolean deleteDir(File dir) {
        if (dir.isDirectory()) {
            String[] children = dir.list();
            //递归删除目录中的子目录下
            for (int i=0; i<children.length; i++) {
            	//使用有参构造方法构造子类对象
                boolean success = deleteDir(new File(dir, children[i]));
                if (!success) {
                    return false;
                }
            }
        }
        // 目录此时为空,可以删除
        return dir.delete();
    }

	public static void main(String[] args) throws IOException {
		
		//1.创建一个文件,连同创建该文件的上级文件夹
		TestDelFile tdf = new TestDelFile();
		File file = new File("E:/你好/吗/少年/哈哈哈/a.txt");
		if(!file.exists()){
			//文件不存在,创建文件
			System.out.println(file.mkdirs()?"文件创建成功":"文件创建失败");
		}
		//2.删除该文件夹及该文件夹下的所有文件和文件夹
		File file2 = new File("E:/你好/吗");
		boolean b = tdf.deleteDir(file2);
		System.out.println(b?"删除成功":"删除失败");
	}

}

猜你喜欢

转载自blog.csdn.net/qq_1325508134/article/details/81272612
今日推荐