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)介及入門小例子(推薦)
下面小編就為大家?guī)?lái)一篇基于Spring MVC 簡(jiǎn)介及入門小例子(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06
mybatis模糊查詢之bind標(biāo)簽和concat函數(shù)用法詳解
大家都知道bind 標(biāo)簽可以使用 OGNL 表達(dá)式創(chuàng)建一個(gè)變量井將其綁定到上下文中,接下來(lái)通過(guò)本文給大家介紹了mybatis模糊查詢——bind標(biāo)簽和concat函數(shù)用法,需要的朋友可以參考下2022-08-08
JAVA像SQL一樣對(duì)List對(duì)象集合進(jìn)行排序
這篇文章主要介紹了JAVA像SQL一樣對(duì)List對(duì)象集合進(jìn)行排序的實(shí)現(xiàn)方法,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07
Spring 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-12
Spring數(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-05
Mybatis如何通過(guò)注解開(kāi)啟使用二級(jí)緩存
這篇文章主要介紹了Mybatis基于注解開(kāi)啟使用二級(jí)緩存,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11

