递归地删除文件

ZDNet软件频道 时间:2002-12-25 作者:BUILDER.COM |  我要评论()
本文关键词:cpptips
以一种平台相关的方式安全地删除非空的目录,需要少量的算法,从目录树的底层向上依次删除。清空一个目录中的文件,只需简单地循环调用目录下的所有文件的delete方法即可。

删除一个包含文件的目录并不像创建File对象和调用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();
}

如果你在Java1.1或者J2ME和个人Java的版本上编码,那么没有File.listFiles方法可供调用。作为替代,你可以调用File.list方法,这个方法返回一个String的数组,然后,在每一个String上构造新的File对象。




责任编辑:炒饭

欢迎评论或投稿


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134