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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Zenith 中级黑马   /  2014-1-4 16:47  /  1330 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.io.File;

/*
* 需求:删除指定的目录。(目录是带有目录或者文件的)
*/
public class DeleteFile {
    public static void main(String[] args) {
        File file = new File("test");
        deleteFiles(file);
    }

    private static void deleteFiles(File file) {
        File[] fileArray = file.listFiles();
        if (fileArray != null) {
            for (File f : fileArray) {
                if (f.isDirectory()) {
                    deleteFiles(f);
                } else {
                    System.out.println(f.getName() + "***" + f.delete());
                }
            }
            
        }
    }
}

4 个回复

倒序浏览
public class DeleteFile {
        public static void main(String[] args) {
                File file = new File("test");
                deleteFiles(file);
        }

        private static void deleteFiles(File file) {
                File[] fileArray = file.listFiles();
                if (fileArray != null) {
                        for (File f : fileArray) {
                                if (f.isDirectory()) {
                                        deleteFiles(f);
                                } else {
                                        System.out.println(f.getName() + "***" + f.delete());
                                }
                        }
                        // 如果for循环结束,就表示目录下的文件被删除完毕。
                        System.out.println(file.getName() + "***" + file.delete());
                }
        }
}
你那程序只是删除了文件夹里的文件  并没有删除文件夹。
回复 使用道具 举报


  1. import java.io.File;

  2. /*
  3. * 需求:删除指定的目录。(目录是带有目录或者文件的)
  4. */
  5. public class DeleteFile {
  6.     public static void main(String[] args) {
  7.         File file = new File("test");
  8.         deleteFiles(file);
  9.     }

  10.     private static void deleteFiles(File file) {
  11.         File[] fileArray = file.listFiles();
  12.         if (fileArray != null) {//判断该file是否存在.
  13.             for (File f : fileArray) {
  14.                 if (f.isDirectory()) {//判断是否为文件夹
  15.                     deleteFiles(f);//是则递归.
  16.                 } else {//不是,则删除该文件
  17.                     System.out.println(f.getName() + "***" + f.delete());
  18.                 }
  19.             }//此处你内存递归结束,跳出这个文件夹,没有对已经空了的文件夹进行操作.
  20.             System.out.println(file.getName()+"已空,进行删除"+file.delete());//所以这里需要将这个空了的文件夹进行删除.
  21.         }
  22.     }
  23. }
复制代码



回复 使用道具 举报
你写的代码只是循环删除了文件夹里面的文件没有删除文件夹,代码少一句
public class DeleteFile {
    public static void main(String[] args) {
        File file = new File("test");
        deleteFiles(file);
    }

    private static void deleteFiles(File file) {
        File[] fileArray = file.listFiles();
        if (fileArray != null) {
            for (File f : fileArray) {
                if (f.isDirectory()) {
                    deleteFiles(f);
                } else {
                    System.out.println(f.getName() + "***" + f.delete());
                }
            }
            
        }
        file.delete();
    }
}
你试试看这样对不对
回复 使用道具 举报
删除文件夹及内部内容的话需要考虑文件夹内部的文件属性,如果是文件夹就递归删除文件夹,如果是文件就删除文件。也得考虑文件夹中有多层文件夹的情况,判断一个文件时文件夹的话,先进入递归删除方法,出来递归后立马删除当前递归文件夹

代码如下

  1. public static void main(String[] args) {
  2.         File file = new File("test");
  3.         deleteFiles(file);
  4.     }

  5.     private static void deleteFiles(File file) {
  6.         File[] fileArray = file.listFiles();
  7.         if (fileArray != null) {
  8.             for (File f : fileArray) {
  9.                 if (f.isDirectory()) {
  10.                     deleteFiles(f);
  11.                     f.delete();  //这是删除文件夹中的文件夹
  12.                 } else {
  13.                     System.out.println(f.getName() + "***" + f.delete());
  14.                 }
  15.             }            
  16.         }
  17.         file.delete();  //此处为删除test文件夹
  18.     }
复制代码


希望采纳
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马