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(); 的方法
但是這個方法只對 文件或者 空目錄有效,對非空目錄是無法進行刪除的
這個時候我們要 刪除非空目錄 可能就會用到 遞歸的方法:
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標簽和concat函數(shù)用法詳解
大家都知道bind 標簽可以使用 OGNL 表達式創(chuàng)建一個變量井將其綁定到上下文中,接下來通過本文給大家介紹了mybatis模糊查詢——bind標簽和concat函數(shù)用法,需要的朋友可以參考下2022-08-08
Spring Boot Admin管理監(jiān)控數(shù)據(jù)的方法
本篇文章主要介紹了Spring Boot Admin管理監(jiān)控數(shù)據(jù)的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-12-12
Spring數(shù)據(jù)源及配置文件數(shù)據(jù)加密實現(xiàn)過程詳解
這篇文章主要介紹了Spring數(shù)據(jù)源及配置文件數(shù)據(jù)加密實現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-05-05

