A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王春蕾 中级黑马   /  2014-5-21 08:47  /  1072 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

带内容的文件夹可以分两种,一种是文件夹下都是文件的,只需要使用递归遍历文件夹下的文件,先将文件删除最后将文件夹删除即可;另一种是文件夹下既有文件也有文件夹的,请问这种情况应该怎么删除呢?
以下代码为删除一个文件夹下都是文件的文件夹:
  1.                 File f = new File(path);

  2.                 // System.out.println(f.list().length);
  3.                 if (f.isDirectory() && f.list().length > 0) {
  4.                         File[] files = f.listFiles();
  5.                         for (File file : files) {
  6.                                 if (file.isDirectory()) {
  7.                                         /*
  8.                                          * if (file.list().length == 0) file.delete();
  9.                                          */
  10.                                         deleteDir(file.getPath());
  11.                                 } else if (file.isFile()) {
  12.                                         file.delete();
  13.                                 }
  14.                         }
  15.                 }
  16.                 f.delete();
复制代码

2 个回复

倒序浏览
本帖最后由 周俊波 于 2014-5-21 11:45 编辑

你的代码好像没有贴全吧,我没看明白你的递归思想,你可以参考一下我写的这个,其实递归就是自己调用自己,你把要做的一整个事情,分开来看,就这个删除来说,你先不要想着怎么一下全部删除,然后把自己的思想带入,把能想到的可能都考虑到就出来了。
  1.         public boolean deleteDir(String url) {
  2.                 File f = new File(url);
  3.                 File[] files;
  4.                 if(f.isDirectory()) {//判断是否为文件夹
  5.                         files = f.listFiles();
  6.                         if(files.length == 0) { //如果文件夹为空,则直接删除
  7.                                 f.delete();
  8.                         }else {
  9.                                 for(int i=0;i<files.length;i++) {//不为空遍历
  10.                                         File ff = files[i];
  11.                                         deleteDir(ff.getPath());
  12.                                 }
  13.                                 f.delete();//遍历删除完文件后,记得删除文件夹
  14.                                 System.out.println("删除文件夹成功++++++" + f.getPath());
  15.                         }
  16.                 } else {//不是文件夹直接删除文件
  17.                         f.delete();
  18.                         System.out.println("删除文件成功" + url);
  19.                 }
  20.                 return true;
  21.         }
复制代码



回复 使用道具 举报
  1. import java.io.*;

  2. class Demo
  3. {


  4.         public static void deleteFile(String filePathName){
  5.                 File file=new File(filePathName);

  6.                 if(file.isDirectory()){
  7.                         File[]files=file.listFiles();
  8.                         for(File fileit:files){
  9.                                 deleteFile(fileit.getPath());
  10.                         }
  11.                         System.out.println("delete dir..."+file.getPath()+"...delete..."+file.delete());
  12.                 }
  13.                 else{
  14.                         System.out.println(file.getPath()+"...delete..."+file.delete());
  15.                        
  16.                 }
  17.         }
  18.         public static void main(String[] args)
  19.         {
  20.                 String filePathName="c:\\genxinzou";
  21.                
  22.                
  23.                 deleteFile(filePathName);
  24.                
  25.         }
  26. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马