1 public static void delDir(File f) { 2 // 判断是否是一个目录, 不是的话跳过, 直接删除; 如果是一个目录, 先将其内容清空. 3 if(f.isDirectory()) { 4 // 获取子文件/目录 5 File[] subFiles = f.listFiles(); 6 // 遍历该目录 7 for (File subFile : subFiles) { 8 // 递归调用删除该文件: 如果这是一个空目录或文件, 一次递归就可删除. 如果这是一个非空目录, 多次 9 // 递归清空其内容后再删除 10 delDir(subFile); 11 } 12 } 13 // 删除空目录或文件 14 f.delete(); 15 }
顺便说一下, 64位的系统大概可以调用几万次递归. 我们基本上不会创建有一万多层的目录. 所以这种方法可以应对一般情况, 不会造成内存溢出等问题.