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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

发表回复

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

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