在對文件夾進行操作時,如果用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 "目錄不存在";
}
}