浅谈Java中使用递归方法删除文件

开发 后端
删除一个非空目录并不是简单地创建一个文件对象,然后再调用delete()就可以完成的。但本文为大家讲解如何在Java中使用递归方法删除文件。

要在Java中平台无关的方式下安全地删除一个非空目录,你还需要一个算法。该算法首先删除文件,然后再从目录树的底部由下至上地删除其中所有的目录。

只要简单地在目录中循环查找文件,再调用delete就可以清除目录中的所有文件:

static public void emptyDirectory(File directory) {
    File[ ] entries = directory.listFiles( );
    for(int i=0; i        entries[i].delete( );
    }
}

这个简单的方法也可以用来删除整个目录结构。当在循环中遇到一个目录时它就递归调用deleteDirectory,而且它也会检查传入的参数是否是一个真正的目录。最后,它将删除作为参数传入的整个目录。

static public void deleteDirectory(File dir) throws IOException {
    if( (dir == null) || !dir.isDirectory) {
        throw new IllegalArgumentException(
                  "Argument "+dir+" is not a directory. "
              );
    }

    File[ ] entries = dir.listFiles( );
    int sz = entries.length;

    for(int i=0; i        if(entries[i].isDirectory( )) {
            deleteDirectory(entries[i]);
        } else {
            entries[i].delete( );
        }
    }

   dir.delete();
}

在Java 1.1以及一些J2ME/PersonalJava的变种中没有File.listFiles方法。所以只能用File.list,它的返回值一个字符串数组,你要为每个字符串构造一个新的文件对象。

【编辑推荐】

  1. JavaOne 2009第三天:微软与Sun/Oracle携手并进
  2. 开发高可移植性J2ME的软件
  3. Java虚拟机(JVM)中的内存设置详解
  4. Java中的堆内存与栈内存分配浅析
  5. 非常全面的实用JavaScript开发工具列表
责任编辑:王观 来源: 百家编程
相关推荐

2009-06-06 19:12:19

javaFileFilter搜索

2009-08-17 07:58:00

C#删除文件目录

2011-06-15 10:08:01

Qt CVS

2024-12-16 15:07:10

2011-08-23 17:52:39

LUAWeb 开发

2009-06-10 09:58:32

Oracle sequHibernate

2009-06-15 14:28:00

NetBeansJavafx

2010-09-25 15:20:43

SQL递归语句

2009-07-20 17:41:59

Java JDBC

2023-01-28 17:41:07

Java代码

2011-07-20 14:53:28

iPhone NSLocalize 国际化

2019-10-22 17:33:57

LinuxBash脚本

2009-06-17 15:06:39

Java 学习方法

2022-07-04 11:06:02

文件上传权限网站

2010-07-19 12:49:55

Perl修改文件

2009-08-28 12:25:58

C#静态方法

2010-08-03 15:40:30

NFS文件格式

2009-07-02 13:31:13

JSP组件

2010-04-30 18:25:25

Unix删除

2009-09-14 15:45:28

LINQ删除XML节点
点赞
收藏

51CTO技术栈公众号