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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • AnyCast技术浅析

    AnyCast技术浅析一常见通信方式1.1UniCastAnyCast1.2MultiCast1.3BroadCast二什么是BGPAnyCast三AnyCast技术特点四AnyCast应用场景4.1场景一:基于IPAnycast+BGP的DNS部署4.2场景二:防范DDOS攻击4.3场景三:大型企业CDN部署4.4场景四:时延敏感度高的内容服务业务五AnyCast总结5.1优点5.2缺点一常见通信方式1.1Un…

    2022年5月24日
    52
  • vscode控制台输出乱码_python运行出现乱码

    vscode控制台输出乱码_python运行出现乱码问题:在VSCode中使用RunCode运行python程序会出现以下乱码:原因:没有设置python的编码格式问题解决:在file—Preferences——Settings中找到RunCodeconfiguration——Editinsettings.json,如下在打开的json文件中查看是否有”code-runner.executorMap”:{…}项,没有的话就手动加进去,然后找到”python”:”python..

    2025年6月10日
    0
  • 数组—进制转换(查表法)

    数组—进制转换(查表法)

    2021年8月25日
    61
  • 微信JS-SDK实现自定义分享功能,分享给朋友,分享到朋友圈「建议收藏」

    微信JS-SDK实现自定义分享功能,分享给朋友,分享到朋友圈「建议收藏」微信JS-SDK实现自定义分享功能,分享给朋友,分享到朋友圈导语:微信分享在手机右上角的三个点一键分享就ok了,那么对于分享到朋友圈,分享给朋友是怎么实现的呢?对于那种活动分享送流量是怎么定位分享者的呢?而想要将文章发送给朋友又是怎么获取到的朋友列表的呢?微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包。JSSDK使用步骤1、绑定域

    2022年5月13日
    36
  • 树莓派、jetson nano 安装pycharm arm架构64 aarch64

    树莓派、jetson nano 安装pycharm arm架构64 aarch64树莓派、jetsonnano安装pycharmarm架构64aarch64

    2022年10月29日
    0
  • django菜鸟教程用pycharm_runoob菜鸟教程官网

    django菜鸟教程用pycharm_runoob菜鸟教程官网Django安装以及简单项目创建(被django支配的恐惧)django简介python中有许多web框架,django无疑是一位S级选手,django是一个开放源代码的web框架,是由python写成的一个web框架.安装在安装django的同时,怎么能没有python呢django和python不可分割的一对基友,路径如下:python下载路径:https://www.pytho…

    2022年9月8日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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