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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 潘才新 高级黑马   /  2013-8-6 16:39  /  1183 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请教各路高手~代码中怎么修改,想要删除不成功返回"删除失败"但我这样写的话
之前文件夹被删除之后第二次删除执行else不到就报错了。怎么样修改可以进行判断~
  1. package day02;

  2. import java.io.File;
  3. public class RemoveDir {

  4.         /**
  5.          * @param args
  6.          */
  7.         public static void main(String[] args) {
  8.                 // TODO Auto-generated method stub
  9.                 File file=new File("c:\\asd");
  10.                 if(removeDir(file)){
  11.                         System.out.println("删除成功");
  12.                 }
  13.                 else{
  14.                         System.out.println("删除失败");
  15.                 }
  16.         }
  17.         public static boolean removeDir(File dir){
  18.                 System.out.println(dir);
  19.                 File[] files=dir.listFiles();
  20.                 for(int x=0;x<files.length;x++){
  21.                         if(files[x].isDirectory()&&!files[x].isHidden()){
  22.                                 removeDir(files[x]);
  23.                         }
  24.                         else{
  25.                                 files[x].delete();
  26.                         }
  27.                 }
  28.                 return dir.delete();
  29.         }

  30. }
复制代码

2.jpg (110.81 KB, 下载次数: 5)

2.jpg

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 神马都是浮云

查看全部评分

7 个回复

正序浏览
  删除前要加个判断(这应该是严谨性的不足,开始的时候都这样,总结的多了就好了),判断这个文件存不存在
用file.exists().当存在这个文件时,你就调用你的RemoveDir方法,不存在是就直接给出提示或则直接返回false;。
回复 使用道具 举报
21行前应该有一个判断语句,如果给定的文件不为空,才可以列出该文件中的内容。
若为空则直接返回false;
if(dir!=null){这里是你的主体语句;return dir.delete();  }else{return false;}

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 赞一个!

查看全部评分

回复 使用道具 举报
感谢朋友们的解答!!!{:soso_e116:}
回复 使用道具 举报
本帖最后由 天地有我 于 2013-8-6 20:36 编辑

给你修改了一下,希望能满足你的要求。

import java.io.File;

public class RemoveDir
{

        /**
         * @param args
         */
        public static void main(String[] args)
        {
                // TODO Auto-generated method stub
                File file = new File("c:\\asd");
                if (removeDir(file))
                {
                        System.out.println("删除成功");
                }
                else
                {
                        System.out.println("删除失败");
                }
        }

        public static boolean removeDir(File dir)
        {
                System.out.println(dir);
                if (!dir.exists())
                {
                        return false;
                }
                else
                {
                        if (dir.isFile())
                        {
                                return dir.delete();
                        }
                        else
                        {
                                File[] files = dir.listFiles();
                                if (files.length == 0)
                                {
                                        return dir.delete();
                                }
                                else
                                {
                                        for (int x = 0; x < files.length; x++)
                                        {
                                                if (files[x].isDirectory() && !files[x].isHidden())
                                                {
                                                        removeDir(files[x]);
                                                }
                                                else
                                                {
                                                        files[x].delete();
                                                }
                                        }
                                        return dir.delete();
                                }

                        }
                }

        }

}

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 赞一个!

查看全部评分

回复 使用道具 举报
貌似是空指针异常,说明你要用到的东西可能不存在,所以你要想想你都操作了什么,这里只有文件夹,所以你操作的文件夹可能不存在吧,要么判断一下,要么把异常抛出去。
回复 使用道具 举报
你在删除前要加个判断,判断这个文件存不存在
用file.exists().当存在这个文件时,你就调用你的RemoveDir方法,不存在是就直接给出提示。这样就解决问题了

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 赞一个!

查看全部评分

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