java 快速删除文件夹_java File删除文件夹完整版
經(jīng)常寫代碼,應(yīng)該能遇到這樣一個問題,需要用java刪除某個文件夾,如果文件夾下面有子文件夾或文件,可能子文件夾下面還有文件或者文件夾的話,這樣直接是刪不掉的,什么意思呢,我查遍java file的api,當(dāng)文件夾下面還存在文件時,并沒有直接提供方法刪除。為了省事,剛才隨便百度了一個,代碼比較長,由于我需要刪除的子文件夾中存在以“.”開頭的文件,于是并不能刪除。最后靜下來自己寫了一個,總共代碼就十行左右,但是和一般人的思路都不太一樣。
private void deleteFile(String fileName){
File file = new File(fileName);
if(file.exists()){
file.delete();
}
if(file.exists()){
String[] paths = file.list();
for(String str:paths){
deleteFile(fileName+"\\"+str);
}
file.delete();
}
}
這樣確實(shí)解決了問題,但是細(xì)想下,里面還是有些問題的,java不讓刪除有子文件的文件夾,估計(jì)也是為了安全考慮,沒有任何提示,一旦刪除,那就真沒了。那我們來稍微修改下代碼:
private void deleteFile(String fileName,boolean isForceDelete){
File file = new File(fileName);
if(file.exists()){
file.delete();
}
if(file.exists()){
if(!isForceDelete){
return;
}
String[] paths = file.list();
for(String str:paths){
deleteFile(fileName+"\\"+str,isForceDelete);
}
file.delete();
}
}
傳這樣一個參數(shù),是否強(qiáng)制刪除,如果文件夾下面還是文件夾,那就不刪除,只要傳一個boolean型的參數(shù)false就解決了問題。
看到這,本以為解決了問題,其實(shí)還沒有,你知道遞歸的執(zhí)行效率很低,并且對資源的占用情況隨著任務(wù)規(guī)模的擴(kuò)大,對資源的占用將呈幾何式增長么,你想一下,如果目標(biāo)文件夾下面存在大量的層級比較深的文件和文件夾時,這時候的執(zhí)行效率是比較低的,而且很占資源。一旦你選擇了遞歸算法,我覺得執(zhí)行效率沒啥改變了,但是資源占用方面可以有所改變,因此可以從這方面考慮下。這時候不用疑惑,java的GC線程雖然是實(shí)時的在檢測著,但是一旦系統(tǒng)規(guī)模大了,難免有些照應(yīng)不過了,因此有些垃圾對象可能會刪除的有點(diǎn)遲,這里可以查一下,gc回收垃圾的機(jī)制有一種是查詢對象是否還有被引用,一旦沒有被引用,則立即啟用回收,準(zhǔn)備回收,于是我們可以稍微再改下代碼:
private void deleteFile(String fileName,boolean isForceDelete){
File file = new File(fileName);
if(file.exists()){
file.delete();
}
if(file.exists()){
if(!isForceDelete){
return;
}
String[] paths = file.list();
for(String str:paths){
deleteFile(fileName+"\\"+str,isForceDelete);
}
file.delete();
paths = null;// lets gc do its works
}
file = null;// lets gc do its works
}
這樣問題應(yīng)該徹底解決了,雖然我也只是一名菜鳥,但是平時就應(yīng)該用這樣的標(biāo)準(zhǔn)要求自己,平時多研究下,隨著經(jīng)驗(yàn)的積累,總一天別人也會叫你"大牛"、"*哥",至于lets gc do its works 這樣的注釋寫法源于java 源碼,java源碼都是開放的,建議大家沒事多研究下java源碼,里面有很多經(jīng)典的代碼。
總結(jié)
以上是生活随笔為你收集整理的java 快速删除文件夹_java File删除文件夹完整版的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.Net 验证正则表达式
- 下一篇: 复利计算评价博客