快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

使用递归方式删除文件

删除一个非空目录并不是简朴地创建一个文件对象,然后再调用delete()就可以完成的。要在平台无关的方法下安全地删除一个非空目录,你还需要一个算法。该算法首先删除文件,然后再从目录树的底部由下至上地删除其中所有的目录。

只要简朴地在目录中循环查找文件,再调用delete就可以清除目录中的所有文件:
static public void emptyDirectory(File directory) {
    File[ ] entries = directory.listFiles( );
    for(int i=0; i<entries.length; 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<sz; i++) {
        if(entries[i].isDirectory( )) {
            deleteDirectory(entries[i]);
        } else {
            entries[i].delete( );
        }
    }

   dir.delete();
}

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



返回类别: 教程
上一教程: 让Java程序自带JRE
下一教程: 一个JAVA写的背单词程序

您可以阅读与"使用递归方式删除文件"相关的教程:
· 删除文件夹的java类
· 用SERVLETS实现WEB方法的文件下传
· 使用JSP完成文件可定制上载
· 使用FILEFILTER查找文件系统
· 企业内部网中使用POLICY文件来设置JAVA的安全策略
    微笑服务 优质保证 索取样品