技术开发 频道

Java的File对象递归删除目录下所有内容

  【IT168 技术文档】一个File对象,如果是目录,那么delete()方法要求目录已经是空的,否则不能删除。为了不管如何都删除一个指定文件夹下的所有内容,于是有了今天随手的一个小段子,算是初学Java的小练习:

  import java.io.*;   public class DeleteAll {   //删除文件夹下所有内容,包括此文件夹   public void delAll(File f) throws IOException {   if(!f.exists())//文件夹不存在不存在   throw new IOException("指定目录不存在:"+f.getName());   boolean rslt=true;//保存中间结果   if(!(rslt=f.delete())){//先尝试直接删除   //若文件夹非空。枚举、递归删除里面内容   File subs[] = f.listFiles();   for (int i = 0; i <= subs.length - 1; i++) {   if (subs[i].isDirectory())   delAll(subs[i]);//递归删除子文件夹内容   rslt = subs[i].delete();//删除子文件夹本身   }   rslt = f.delete();//删除此文件夹本身   }   if(!rslt)   throw new IOException("无法删除:"+f.getName());   return;   }   public static void main(String[] args) {   DeleteAll da= new DeleteAll();   try {   da.delAll(new File("someDir"));   }   catch (IOException ex) {   ex.printStackTrace();   }   }   }
0
相关文章