Java調用命令行遞歸刪除文件夾

        前幾天寫東西的時候須要刪除指定目錄下的全部文件,文件大概800M左右吧,用遞歸的方式刪除感受很慢,因而就用了命令行的方式刪除,而後從Java中調用,目前就用過Linux和Windows其餘的操做系統還沒用過--

Linux下遞歸刪除的命令是: java


rm -fr [Directory]


Windows下遞歸刪除的命令是:
rmdir /S /Q [Directory]

知道了這兩個命令就好辦了,從Java中調用 shell


Runtime run = Runtime.getRuntime();
run.exec([Command]);
這樣一來就能夠實現遞歸刪除文件夾了,速度比用遞歸刪除快,可是還存在個問題就是在什麼狀況下用Linux命令,在什麼狀況下用Windows命令,我是選擇判斷的文件分割符



if(File.separator.equals("/")){
    //is Linux
}else{
    //is Windows
}
這種作法純屬偷懶,若是開發用的Windows部署用Linux就會遇到問題,嚴禁的方式應該是經過獲取到的操做系統類型來判斷:



Properties prop = System.getProperties();
String osname = prop.getProperty("os.name");
這樣就獲取到了操做系統的類型,而後再根據類型判斷該調用什麼命令。


最後能夠封裝成一個FileUtil,當須要遞歸刪除的時候直接調用。 操作系統

FileUtil.java 命令行


import java.io.IOException;
public class FileUtil {
	private static String LINUX_DEL_ALL="rm -fr ";
	private static String WINDOWS_DEL_ALL="rmdir /S /Q ";
	private static String osname = System.getProperties().getProperty("os.name");
	public static void delAll(String path) {  
		Process proc=null;  
		try {
			if(osname.equals("Linux"))
				proc = Runtime.getRuntime().exec(LINUX_DEL_ALL+path);
			else if(osname.equals("Windows"))
				proc=Runtime.getRuntime().exec(FileUtil.WINDOWS_DEL_ALL+"path");
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			proc.destroy();
		}
	}
}


須要的時候調用: code

FileUtil.delAll([path]);
就能夠了。

固然上面的代碼也有問題,僅供參考。其餘操做系統沒有研究過,不過聰明的你能夠自行加入^^ 遞歸

相關文章
相關標籤/搜索