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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 任献东 中级黑马   /  2014-10-11 18:11  /  1596 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package cn.itcast.io.p1.file.test;

  2. import java.io.File;


  3. /*
  4. * 删除一个带内容的目录。
  5. *
  6. * 原理:必须从最里面往外删。
  7. * 需要进行深度遍历。
  8. *
  9. *
  10. *
  11. */
  12. public class RemoveDirTest {

  13.         /**
  14.          * @param args
  15.          */
  16.         public static void main(String[] args) {

  17.                 File dir  = new File("e:\\demodir");
  18. //                dir.delete();
  19.                 removeDir(dir);
  20.         }

  21.         public static void removeDir(File dir) {
  22.                
  23.                 File[] files = dir.listFiles();//获取DIR对象包含的FILE类型对象数组
  24.                
  25.                 for(File file : files){
  26.                        
  27.                         if(file.getTotalSpace()==0){//为什么通过文件大小删除不了呢
  28.                                 removeDir(file);
  29.                         }else{
  30.                                 System.out.println(file+":"+file.delete());
  31.                         }
  32.                 }
  33.                 System.out.println(dir+":"+dir.delete());
  34.         }
  35.        

  36. }
复制代码

请问  为什么通过判断文件大小删除不了呢 楼主刚来黑马论坛 请多关照

评分

参与人数 1技术分 +1 收起 理由
敏敏好学 + 1

查看全部评分

4 个回复

倒序浏览
根据查看api 可以知道
File.delete()的作用是
删除此抽象路径名表示的文件或目录。如果此路径名表示一个目录,则该目录必须为空才能删除。
所以删除失败是因为你的文件目录里面还包含文件 所以才不能删除
你可以做个判断是否这个文件夹里面还有文件

评分

参与人数 1技术分 +1 收起 理由
敏敏好学 + 1

查看全部评分

回复 使用道具 举报
getTotalSpace方法得到的不是文件长度,永远不是0,你可以写一个打印语句,看看空文件夹就知道了。length方法才是得到的文件大小。

自己写了一个
  1. import java.io.File;

  2. public class Demo {

  3.         public static void main(String[] args) {
  4.                 File file = new File("f://haha");
  5.                 removeDir(file);

  6.         }

  7.         public static void removeDir(File file) {
  8.                 File[] files = file.listFiles();
  9.                 for (File f : files) {
  10.                         if(f.isFile()){
  11.                                 f.delete();
  12.                         }else {
  13.                                 removeDir(f);
  14.                                 f.delete();
  15.                         }
  16.                 }
  17.                 file.delete();
  18.         }
  19. }
复制代码








回复 使用道具 举报
LL.t 发表于 2014-10-11 18:54
根据查看api 可以知道
File.delete()的作用是
删除此抽象路径名表示的文件或目录。如果此路径名表示一个目 ...

不能通过getTotalSpace()获取文件大小来判断是不是空文件夹么
回复 使用道具 举报
任献东 发表于 2014-10-11 20:11
不能通过getTotalSpace()获取文件大小来判断是不是空文件夹么

getTotalSpace() 返回的是指定分区的大小  而不是文件夹的大小
判断大小的话  文件夹可能是空 或者 有大小
文件的话 也可能是空 或者 有大小
所以 这样是不行的
你可以看看三楼的
isFile() 是判断这个抽象路径名 是否为一个标准文件 (一般情况下非目录文件都是标准文件的)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马