java如何刪除非空文件夾
java刪除非空文件夾
java中刪除文件和空文件夾很簡(jiǎn)單,直接調(diào)用File api ,file.delete()就可以刪除文件或者空文件夾本身。
但是如果是非空文件夾,這個(gè)方法就會(huì)失敗,就像在linux下我們使用命令rm刪除非空文件夾一樣,它會(huì)提示文件夾不為空,我們需要加上-r參數(shù)強(qiáng)制遞歸刪除,才能將這個(gè)文件夾刪除。
java中刪除非空文件夾也類似,如果要?jiǎng)h除,必須要連帶文件夾中的內(nèi)容一起刪除,所以這里也需要遞歸刪除。
思路很簡(jiǎn)單
因?yàn)槲覀儎h除的是文件夾,所以這里先列出文件夾中的文件,如果是文件直接刪除,如果是文件夾,繼續(xù)遞歸調(diào)用刪除方法,最后還要將空文件夾本身刪除。
show me the code:
package com.xxx.oop; import java.io.File; public class Hello { public static void deleteDir(String path){ File file = new File(path); File[] list = file.listFiles(); for(File f:list){ if(f.isDirectory()){ deleteDir(f.getPath()); }else{ f.delete(); } } boolean deleted = file.delete(); System.out.println(deleted); } public static void main(String[] args) { String path = "C:\\Users\\buejee\\Desktop\\test"; deleteDir(path); } }
這個(gè)代碼本身沒(méi)有難度,就是一個(gè)簡(jiǎn)單的遞歸調(diào)用,但是卻很管用。
這種方式,不管刪除空文件夾還是非空文件夾都好使。
遞歸刪除非空文件夾(目錄)
Java 對(duì)File類 提供了一個(gè)刪除文件 delete(); 的方法
但是這個(gè)方法只對(duì) 文件或者 空目錄有效,對(duì)非空目錄是無(wú)法進(jìn)行刪除的
這個(gè)時(shí)候我們要 刪除非空目錄 可能就會(huì)用到 遞歸的方法:
private static void delDirectory(File f) { //判斷是否目錄 if (f.isDirectory()) { //是目錄,判斷是否有子文件 if (f.listFiles().length>0) { for (File file : f.listFiles()) { //有子文件再次調(diào)用本方法 delDirectory(file); } }else { //無(wú)子文件直接刪除 f.delete(); } } //刪除空目錄 或 文件 f.delete(); }
使用main方法調(diào)用:
public static void main(String[] args) { File f = new File("C:\\Users\\jacktu\\Desktop\\test"); delDirectory(f); }
成功刪除桌面的 test 文件夾 --這里就不上圖了
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java時(shí)間 java.util.Calendar深入分析
這篇文章主要介紹了java時(shí)間 java.util.Calendar深入分析的相關(guān)資料,需要的朋友可以參考下2017-02-02基于Spring MVC 簡(jiǎn)介及入門(mén)小例子(推薦)
下面小編就為大家?guī)?lái)一篇基于Spring MVC 簡(jiǎn)介及入門(mén)小例子(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06mybatis模糊查詢之bind標(biāo)簽和concat函數(shù)用法詳解
大家都知道bind 標(biāo)簽可以使用 OGNL 表達(dá)式創(chuàng)建一個(gè)變量井將其綁定到上下文中,接下來(lái)通過(guò)本文給大家介紹了mybatis模糊查詢——bind標(biāo)簽和concat函數(shù)用法,需要的朋友可以參考下2022-08-08JAVA像SQL一樣對(duì)List對(duì)象集合進(jìn)行排序
這篇文章主要介紹了JAVA像SQL一樣對(duì)List對(duì)象集合進(jìn)行排序的實(shí)現(xiàn)方法,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07Spring Boot Admin管理監(jiān)控?cái)?shù)據(jù)的方法
本篇文章主要介紹了Spring Boot Admin管理監(jiān)控?cái)?shù)據(jù)的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-12-12Spring數(shù)據(jù)源及配置文件數(shù)據(jù)加密實(shí)現(xiàn)過(guò)程詳解
這篇文章主要介紹了Spring數(shù)據(jù)源及配置文件數(shù)據(jù)加密實(shí)現(xiàn)過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05Mybatis如何通過(guò)注解開(kāi)啟使用二級(jí)緩存
這篇文章主要介紹了Mybatis基于注解開(kāi)啟使用二級(jí)緩存,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11