java如何刪除非空文件夾
java刪除非空文件夾
java中刪除文件和空文件夾很簡單,直接調(diào)用File api ,file.delete()就可以刪除文件或者空文件夾本身。
但是如果是非空文件夾,這個方法就會失敗,就像在linux下我們使用命令rm刪除非空文件夾一樣,它會提示文件夾不為空,我們需要加上-r參數(shù)強制遞歸刪除,才能將這個文件夾刪除。
java中刪除非空文件夾也類似,如果要刪除,必須要連帶文件夾中的內(nèi)容一起刪除,所以這里也需要遞歸刪除。
思路很簡單
因為我們刪除的是文件夾,所以這里先列出文件夾中的文件,如果是文件直接刪除,如果是文件夾,繼續(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); } }
這個代碼本身沒有難度,就是一個簡單的遞歸調(diào)用,但是卻很管用。
這種方式,不管刪除空文件夾還是非空文件夾都好使。
遞歸刪除非空文件夾(目錄)
Java 對File類 提供了一個刪除文件 delete(); 的方法
但是這個方法只對 文件或者 空目錄有效,對非空目錄是無法進(jìn)行刪除的
這個時候我們要 刪除非空目錄 可能就會用到 遞歸的方法:
private static void delDirectory(File f) { //判斷是否目錄 if (f.isDirectory()) { //是目錄,判斷是否有子文件 if (f.listFiles().length>0) { for (File file : f.listFiles()) { //有子文件再次調(diào)用本方法 delDirectory(file); } }else { //無子文件直接刪除 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é)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
mybatis模糊查詢之bind標(biāo)簽和concat函數(shù)用法詳解
大家都知道bind 標(biāo)簽可以使用 OGNL 表達(dá)式創(chuàng)建一個變量井將其綁定到上下文中,接下來通過本文給大家介紹了mybatis模糊查詢——bind標(biāo)簽和concat函數(shù)用法,需要的朋友可以參考下2022-08-08Spring Boot Admin管理監(jiān)控數(shù)據(jù)的方法
本篇文章主要介紹了Spring Boot Admin管理監(jiān)控數(shù)據(jù)的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-12-12Spring數(shù)據(jù)源及配置文件數(shù)據(jù)加密實現(xiàn)過程詳解
這篇文章主要介紹了Spring數(shù)據(jù)源及配置文件數(shù)據(jù)加密實現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-05-05