日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 快速删除文件夹_java File删除文件夹完整版

發(fā)布時間:2023/12/9 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 快速删除文件夹_java File删除文件夹完整版 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

經(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。