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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 湛添友 中级黑马   /  2014-4-20 22:26  /  1187 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//为什么文件夹删不了啊?

package iofile;

import java.io.File;
import java.io.IOException;

/*
* 删除一个带内容的文件目录
*
* 既然是从里往外删除 就需要用到递给
*/
public class DeleteFile
{
        public static void main(String args[]) throws IOException
        {
                File f=new File("D:\\abc");
               
               
                remove(f);
        }
        //删除文件夹级里面的内容
       
        public static void remove(File dir)
        {
                if(dir.exists());//判断文件是否存在
                File arr[]=dir.listFiles();
                for(int x=0;x<arr.length;x++)
                {
                        if(!arr[x].isHidden()&&arr[x].isDirectory())//文件不是隐藏文件并且是个文件夹
                                remove(arr[x]);
                        else
                        System.out.println(arr[x].delete());
                       
                }
                System.out.println(dir+"+"+dir.delete());//删除文件夹
        }
}

5 个回复

倒序浏览
我跑了一下这段代码,可以删除啊.
回复 使用道具 举报
能删了 啊 ,,我试了,你再试试!
回复 使用道具 举报
  1. /*
  2. 删除一个带内容的目录

  3. 删除原理:
  4. 在window中,删除目录从里面往外删除,既然是从里往外删除,就要用到
  5. 递归
  6. */
  7. import java.io.*;
  8. class Demo4
  9. {
  10.         public static void main(String[] args)
  11.         {         //目录不存在会报空指针异常
  12.                 File file=new File("c:/test2");
  13.                 deleteDir(file);
  14.         }
  15.         /*递归 删除指定目录*/
  16.         public static void deleteDir(File file){
  17.                 File []files=file.listFiles();
  18.                 for (File f: files )
  19.                 {
  20.                         //如果是目录 就进里面删
  21.                         if(f.isDirectory())
  22.                                 deleteDir(f);
  23.                         else
  24.                                 sop(f.delete());
  25.                 }
  26.                 file.delete();
  27.         }
  28.         public static void sop(Object o){
  29.                 System.out.println(o);
  30.         }
  31. }


复制代码
回复 使用道具 举报
本帖最后由 孙旌棋 于 2014-4-21 07:10 编辑

同学, 你的代码已经修改并测试成功, 你看好我的第二十三行代码你是怎么写的, 你if()后面是  ;   程序到这里意味着什么? 相当于这句话执行完毕了就,  if()判断根本就没有执行, 第二个if() 确实是可以省略大括号的, 但是前提是执行的语句只能是一句的哦

  1. //为什么文件夹删不了啊?
  2. package iofile;

  3. import java.io.File;
  4. import java.io.IOException;

  5. /*
  6. * 删除一个带内容的文件目录
  7. *
  8. * 既然是从里往外删除 就需要用到递给
  9. */
  10. public class DeleteFile {
  11.         public static void main(String args[]) throws IOException {
  12.                 File f = new File("D:\\abc");

  13.                 remove(f);
  14.         }

  15.         // 删除文件夹级里面的内容

  16.         public static void remove(File dir) {
  17.                 if (dir.exists()) {
  18.                         // 判断文件是否存在
  19.                         File arr[] = dir.listFiles();
  20.                         for (int x = 0; x < arr.length; x++) {
  21.                                 if (!arr[x].isHidden() && arr[x].isDirectory())// 文件不是隐藏文件并且是个文件夹
  22.                                         remove(arr[x]);
  23.                                 else
  24.                                         System.out.println(arr[x].delete());

  25.                         }
  26.                         System.out.println(dir + "+" + dir.delete());// 删除文件夹
  27.                 }
  28.         }

  29. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 赞一个!

查看全部评分

回复 使用道具 举报
爱翚 发表于 2014-4-20 22:34
我跑了一下这段代码,可以删除啊.

你的什么系统?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马