JAVA运用dos命令强制删除文件夹

来源:互联网 发布:爱国者诚信联盟知乎 编辑:程序博客网 时间:2024/06/13 13:21

在对文件夹进行操作时,如果用file.deleate()方法,有时候恐怕不凑效.用了第三方的FileUtils的forceDeleteFile()还是不凑效,所以,自己就用java写一个基于dos命令的方法来实现强制删除文件夹.
这并没有什么难的,只要知道dos命令,在java文件中调用runtime就好办了.
在这里为写了三个方法:删除某个文件目录;删除某个文件(不是文件夹)和清空某个文件夹下的所有文件及文件夹.自己根据自己的需求用吧.

/**使用dos命令强力删除目录     * 强力删除文件夹,里面就算有子文件夹,隐藏的,只读的,都能够全部删除掉.     * directory 需要删除的目录     * return 如果目录不存在,则返回"目录不存在";删除成功,返回ok;删除失败 ,返回失败原因     *      */    public static String forceDeleteDirectory(String directory){        File tagFile=new File(directory);        if(tagFile.exists()){            try {                  String cmd = "cmd /c rd "+directory+" /s/q";                  Runtime rt = Runtime.getRuntime(); // 获取运行时系统                  Process proc = rt.exec(cmd); // 执行命令                  InputStream stderr =  proc.getInputStream(); // 获取输入流                  InputStreamReader isr = new InputStreamReader(stderr,"gbk");                  BufferedReader br = new BufferedReader(isr);                  String line = null;                  /*while ((line = br.readLine()) != null) { // 打印出命令执行的结果                  System.out.println(line);              }*/              } catch (Throwable t) {                  t.printStackTrace();                 return t.getMessage();            }             return "ok";        }else {            return "目录不存在";        }    }    /**使用dos命令强力删除文件     * 强力删除文件     * file 需要删除的文件     * return   如果目录不存在,则返回"目录不存在";     *          删除成功,返回ok;     *          删除失败 ,返回失败原因     *      */    public static String forceDeleteFile(String file){        File tagFile=new File(file);        if(tagFile.exists()){            try {                  String cmd = "cmd /c del "+file;                  Runtime rt = Runtime.getRuntime(); // 获取运行时系统                  Process proc = rt.exec(cmd); // 执行命令                  InputStream stderr =  proc.getInputStream(); // 获取输入流                  InputStreamReader isr = new InputStreamReader(stderr,"gbk");                  BufferedReader br = new BufferedReader(isr);                  String line = null;                  /*while ((line = br.readLine()) != null) { // 打印出命令执行的结果                  System.out.println(line);              }*/              } catch (Throwable t) {                  t.printStackTrace();                 return t.getMessage();            }             return "ok";        }else {            return "目录不存在";        }    }    /**使用dos命令强力删除指定文件夹下的文件或者文件夹     *      * file 需要删除的文件     * return   如果目录不存在,则返回"目录不存在";     *          删除成功,返回ok;     *          删除失败 ,返回失败原因     *      */    public static String forceCleanFileBelowDirectory(String directory){        File tagFile=new File(directory);        if(tagFile.exists()){            if(tagFile.isDirectory()){                //是目录,遍历一层,遇鬼杀鬼,遇魔降魔                File[] files=tagFile.listFiles();                for(File file : files){                    if(file.isDirectory()){                        forceDeleteDirectory(file.getAbsolutePath());                    }else {                        forceDeleteFile(file.getAbsolutePath());                    }                }            }else{                //不是目录,直接删除                forceDeleteFile(directory);            }            return "ok";        }else {            return "目录不存在";        }    }
原创粉丝点击