JAVA運用dos命令強制刪除文件夾

在對文件夾進行操作時,如果用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 "目錄不存在";
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章