java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台(即 JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称。
这篇文章主要为大家详细介绍了 Java 非递归实现删除任意目录的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
最近在学 C# 的文件系统, 发现 C# 的文件系统貌似比 java 的东西少一点, 居然连删除目录都直接做好封装了, 想到学 java 的时候还要自己写递归删除, 好像没写过非递归的, 就在网上查了下, 关于非递归删除目录代码没几个, 我就写了一个, 递归网上一大堆, 就不粘上来了. 下面是代码非递归的方法:
- package demo1;
- 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); //模拟一个压栈的过程
- }
- //倒序遍历,模拟一个弹粘的过程
- for (int i = directoryList.size() - 1; i >= 0; i--) {
- directoryList.get(i).delete();
- }
- if (!root.exists()) {
- System.out.println("您输入的是文件夹,已刪除成功");
- }
- }
- }
来源: http://www.phperz.com/article/18/0102/357111.html