撤销删除的目录和文件:
删除目录和文件夹的思路:
1、先删除文件夹中的元素。首先判断文件夹是否为空。
2、继续判断不为空的元素是子文件夹还是文件(isfile),是文件则直接删除。
3、不是文件则就是子文件夹,再循环第二步判断子文件夹中的元素(遍历数组,递归方法)。
4、循环结束,删除自身。
撤销删除的思路:
1、new两个集合,分别装删除的文件夹和文件。
2、再分别遍历两个集合,得到所有的文件夹和文件。实现撤销删除的功能。
package cn.itsource.homework;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
public class HomeWork_02 {
/*2、完成上课所提到的删除方法
【高级部分】:撤销删除(撤销上面刚删除的目录)功能
解题思路:创建一个容器,存储被删除掉的目录,然后遍历容器,撤销删除
*/
static ArrayList<File> a = new ArrayList<>();//装文件
static ArrayList<File> b = new ArrayList<>();//装文件夹
public static void main(String[] args) throws IOException {
File file = new File("d:/movie");
get(file);
//拿到容器中的每一个文件对象进行创建
for (File f1 : b) {
f1.mkdirs();//创建文件夹
}
for (File f2 : a) {
f2.createNewFile();//创建文件
}
}
static void get(File f){
if (f!=null) {//先判断文件夹不为空
if (f.isFile()) {//判断文件夹中的元素是不是文件
a.add(f);//返回此抽象路径名的绝对路径名字符串 添加到集合中
f.delete();//是文件直接删除
}else {//不是文件就是文件夹目录
b.add(f);
File[] listFiles = f.listFiles();//得到文件夹目录下的文件,用抽象的路径名数组表示
if (f.length()!=0) {//继续判断子文件夹中不为空
for (File file : listFiles) {//遍历数组
get(file);//调用方法
}
}
}
f.delete();
}
}
}