前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JAVA运用dos命令强制删除文件夹

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

作者头像
全栈程序员站长
发布2022-06-27 09:01:45
1.3K0
发布2022-06-27 09:01:45
举报
文章被收录于专栏:全栈程序员必看

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

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

代码语言:javascript
复制
/**使用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.cn/133509.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年6月8,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档