删除一个包含文件的目录并不像创建File对象和调用delete()方法那样简单。以一种平台相关的方式安全地删除非空的目录,需要少量的算法,从目录树的底层向上依次删除。
清空一个目录中的文件,只需简单地循环调用目录下的所有文件的delete方法即可。
static public void emptyDirectory(File directory) {这个简单的方法可以一种更强大的方式重用,用于删除整个目录结构。在循环中,无论何时遇到一个目录,就递归调用deleteDirectory方法。该方法应该检查传入的参数是否是一个目录。最后,删除最初传入的目录本身。
File[ ] entries = directory.listFiles( );
for(int i=0; i<entries.length; i++) {
entries[i].delete( );
}
}
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对象。