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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© love$$-IT 中级黑马   /  2015-2-7 22:56  /  1531 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

File中如何实现删除非空文件夹,我只能实现到下一层,如果后面的基层都是非空的话,我就不能实现了,求解?

8 个回复

正序浏览
  1. /*
  2. * 需求:递归删除多级带内容的文件夹
  3. */
  4. public class FileDeleteDemo {
  5.         public static void main(String[] args) {
  6.                 // 分析:
  7.                 // 1、把F盘封装成File对象
  8.                 File srcFolder = new File("Demo");
  9.                 // 递归功能
  10.                 fileDelete(srcFolder);
  11.         }

  12.         private static void fileDelete(File srcFolder) {
  13.                 // 2、获取该目录下所有的文件夹和文件的File数组
  14.                 File[] fileArray = srcFolder.listFiles();
  15.                 // 3、遍历该File数组,判断是否为文件夹
  16.                 for (File file : fileArray) {
  17.                         if (file.isDirectory()) {
  18.                                 // 3、1 是,回到2
  19.                                 fileDelete(file);
  20.                         } else {
  21.                                 // 3、2 不是,删除文件
  22.                                 System.out.println(file.getName() + "---" + file.delete());
  23.                         }
  24.                 }
  25.                 // 删除文件夹
  26.                 System.out.println(srcFolder.getName() + "---" + srcFolder.delete());
  27.         }
  28. }
复制代码
回复 使用道具 举报
使用递归,不知道提醒到这里能不能懂?
回复 使用道具 举报
rehan 中级黑马 2015-2-10 12:19:18
7#
对的,使用递归方法,依次自己调用自己的方法,一直到不是文件夹为止,然后最后将文件夹删除、。。。
回复 使用道具 举报

恩恩,我今天做出来了,谢谢
回复 使用道具 举报
难点在利用递归获取所有文件对象,依次删除就ok了
回复 使用道具 举报
  1. package lwj_10;

  2. import java.io.File;

  3. /*
  4. * 需求:删除路径为:"aaa"这个文件夹
  5. *
  6. * 1:封装删除的路径File srcFile = new File("c:\\");
  7. * 2:获取该路径下的文件或者文件目录的数组对象File[]
  8. * 3:遍历数组,得到每一个File对象
  9. * 4:判断该File是文件还是文件目录
  10. *                文件目录:递归回到第三步,再次循环判断
  11. *                 文件:直接调用file.delete(),删除文件
  12. */
  13. public class DeleteFilesDemo {
  14.         public static void main(String[] args) {
  15.                 // 封装删除的路径
  16.                 File srcFile = new File("abc");
  17.                 // 判断文件是否存在
  18.                 if (srcFile.exists()) {
  19.                         // 如果存在就执行删除
  20.                         deleteFile(srcFile);
  21.                 } else {
  22.                         // 不存在
  23.                         System.out.println("您要删除的文件不存在");
  24.                 }

  25.         }

  26.         private static void deleteFile(File srcFile) {
  27.                 if (srcFile.isDirectory()) {
  28.                         // 获取该路径下的文件或者文件目录的数组对象File[]
  29.                         File fileArray[] = srcFile.listFiles();

  30.                         // 遍历数组,得到每一个File对象
  31.                         for (File file : fileArray) {
  32.                                 // 判断该File是文件还是文件目录
  33.                                 deleteFile(file);
  34.                         }
  35.                 } else {
  36.                         // 文件:那么直接删除即可
  37.                         srcFile.delete();
  38.                 }
  39.                 srcFile.delete();
  40.         }
  41. }
复制代码
回复 使用道具 举报
lwj123 发表于 2015-2-7 23:36
我给你说说实现的思路吧:
1:封装删除的路径File srcFile = new File("c:\\");
2:获取该路径下的文件或者 ...

然后循环外面加一个  删除文件夹{:3_60:}
回复 使用道具 举报
我给你说说实现的思路吧:
1:封装删除的路径File srcFile = new File("c:\\");
2:获取该路径下的文件或者文件目录的数组对象File[]
3:遍历数组,得到每一个File对象
4:判断该File是文件还是文件目录
                文件目录:递归回到第三步,再次循环判断
                       文件:直接调用file.delete(),删除文件

懂不,再不懂,给你写一份。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马