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

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

大家好,又见面了,我是你们的朋友全栈君。

在对文件夹进行操作时,如果用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 "目录不存在";
        }
    }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/133509.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 采用dlopen、dlsym、dlclose加载动态链接库【转】

    采用dlopen、dlsym、dlclose加载动态链接库【转】

  • xsync文件「建议收藏」

    xsync文件「建议收藏」1、写好xsync.sh脚本#!/bin/bash#1.判断参数个数if[$#-lt1]thenechoNotEnoughArguement!exit;fi#2.遍历集群所有机器forhostinhadoop101hadoop102hadoop103doecho====================$host====================#3.遍历所有目录,挨个发送forfilein$@do

  • java文件上传总结[通俗易懂]

    java文件上传总结[通俗易懂]前言文件上传是各类应用中经常碰到的需求,不管是上传图片、文件、音频、视频等,或者其他类型的文件,都是后端需要解决的,采用什么样的方式进行上传,或者对上传后的文件如何进行存储,甚至如何更加高效的上传文件等问题,都是在实际开发中需要解决的,本文将对常用的文件上传使用进行一下简单的小结以springboot为例,下面我们就开始撸码吧,开工前我们还是做一下简单的准备吧,本文的演示demo框架为springboot2.2.1版本,只需简单引入一个下面的依赖即可,其他需要用到的,我们增量添加即可 <de

  • URL解码之URLEncoder

    URL解码之URLEncoder关于URL解码看到了一篇易懂文章什么是application/x-www-form-urlencoded字符串?答:它是一种编码类型。当URL地址里包含非西欧字符的字符串时,系统会将这些字符转换成application/x-www-form-urlencoded字符串。表单里提交时也是如此,当包含非西欧字符的字符串时,系统也会将这些字符转换成application/x-www-form-…

  • 我的Linux内核学习之路

    我的Linux内核学习之路现在回首看看,接触Linux已经很长时间了。在大三的时候开始学习Java,但是一直学Java的话,感觉有点腻,就尝试找点其他东西来学习。所以当时就选择学习了Linux。至于为什么要学习Linux,有以下三个原因。 一是我比较喜欢开源的东西,当时学习Java就是因为它开源,以后选择学习Android很大一部分原因也是因为它开源。现在已经工作了大半年,每当有搞不懂的问

  • AV1,实时编码READY

    AV1,实时编码READY点击上方“LiveVideoStack”关注我们一款编码器的成功,不仅需要大量的金钱,还需要耐心。AV1定稿三年后,是时候为它庆祝了。文|包研不知不觉,距离AV1完成定稿已经过去了三年…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号