java实现递归删除目录及目录下所有文件,递归和非递归方式都有
2017-12-22 20:24
1031 查看
public void delete(String path){ File f=new File(path); if(f.isDirectory()){//如果是目录,先递归删除 String[] list=f.list(); for(int i=0;i<list.length;i++){ delete(path+"//"+list[i]);//先删除目录下的文件 } } f.delete(); }
非递归:
import java.io.File; import java.util.ArrayList; public class Demo1 { /** * 不使用递归删除目录 * @param args */ public static void main(String[] args){ deleteDirectory("E:\\test"); } public static void deleteDirectory(String rootPath) { //fileList模拟一个队列 ArrayList<File> fileList = new ArrayList<File>();//儲存文件和直接子目錄包含文件的目錄 //directoryList 模拟一个栈 ArrayList<File> directoryList = new ArrayList<File>();//存儲直接子目錄中不包含文件的目錄 File root = new File(rootPath); if(!root.exists()){ System.out.println("您输入的不是目录"); return; } if(root.isFile()){ root.delete(); System.out.println("您输入的是文件,已删除成功"); return; } fileList.add(0, root); while(fileList.size() > 0) { //模拟一个出队列的功能 File dir = fileList.remove(0); File[] files = dir.listFiles(); for (int i = 0; i < files.length; i++) { if(files[i].isFile()) files[i].delete(); else fileList.add(files[i]); //模拟一个入队列的功能 } directoryList.add(dir); //模拟一个压栈的过程 }//跳出了while循环,说明所有的file都被删除了,只剩下directory了 //倒叙遍历directoryList ,模拟一个弹栈的过程, for (int i = directoryList.size() - 1; i >= 0; i--) { directoryList.get(i).delete(); } if(!root.exists()){ System.out.println("您輸入的是文件夾,已刪除成功"); } } }
相关文章推荐
- 通过java递归思想实现以树形方式展现出该目录中的所有子目录和文件
- 通过java递归思想实现以树形方式展现出该目录中的所有子目录和文件
- php中通过递归实现删除目录下的所有文件。
- java 递归实现删除或查询指定文件夹下的所有文件
- java:递归实现输出目录下所有的文件(列出目录下所有的文件)
- java 递归实现删除或查询指定目录下的全部文件
- Windows递归删除目录下所有文件-C实现
- Java非递归的方式获取目录中所有文件(包括目录)
- java File 通过递归方式删除文件和目录
- Java实现删除指定下的所有文件(递归思想)
- java递归删除目录下所有文件包括目录
- php实例分享之通过递归实现删除目录下的所有文件详解
- java单个文件复制,递归删除、复制目录下所有内容,递归创建文件夹,.7z文件解压等
- Java递归删除目录下所有的txt文件
- 指定文件目录下搜索关键字(Java实现,递归方式)
- php实例分享之通过递归实现删除目录下的所有文件详解
- 面试题-程序题-Java递归实现遍历文件目录(所有文件夹和子文件)
- 习题13:编写程序,使用File类实现删除当前目录下的所有文件。
- Java删除目录及目录下的所有文件
- 递归遍历某个目录下的所有java文件