java刪除文件夾的實(shí)現(xiàn)方式
java刪除文件夾
先看File.delete()的方法api文檔
Deletes the file or directory denoted by this abstract pathname. If
this pathname denotes a directory, then the directory must be empty in
order to be deleted.
意即,刪除文件或者目錄,但是如果是目錄,則這個(gè)目錄必須是空的才能被刪除。也就是說,要?jiǎng)h一個(gè)非空文件夾,直接調(diào)delete方法是無法達(dá)到目的的。
看到這個(gè)api說明時(shí),我的第一想法是,用 先根遍歷序遞歸刪除 文件夾。
搞定了這個(gè)工具方法和單元測試
/**
* 先根遍歷序遞歸刪除文件夾
*
* @param dirFile 要被刪除的文件或者目錄
* @return 刪除成功返回true, 否則返回false
*/
public static boolean deleteFile(File dirFile) {
// 如果dir對(duì)應(yīng)的文件不存在,則退出
if (!dirFile.exists()) {
return false;
}
if (dirFile.isFile()) {
return dirFile.delete();
} else {
for (File file : dirFile.listFiles()) {
deleteFile(file);
}
}
return dirFile.delete();
}單元測試
@Test
public void delete() {
File file = new File("/temp/lock11-1");
ExcelDiskUtils.deleteFile(file);
}功能是OK的。但是晚上回家想了想。這么基礎(chǔ)的工具方法,肯定有第三方工具類提供支持,自己再寫一遍是浪費(fèi)時(shí)間。于是我開始查guava和commons-io的工具類。
在commons-io包里找到了一個(gè)能達(dá)到同樣目的的方法org.apache.commons.io.FileUtils#deleteDirectory
/**
* Deletes a directory recursively.
*
* @param directory directory to delete
* @throws IOException in case deletion is unsuccessful
* @throws IllegalArgumentException if {@code directory} does not exist or is not a directory
*/
public static void deleteDirectory(final File directory) throws IOException {
... ...
}看方法的api說明
Deletes a directory recursively.
意即,遞歸的刪除一個(gè)目錄。
自己在寫一些常規(guī)的工具方法時(shí),最好先看看commons包或者guava包有沒有提供,如果提供了,就用他們的。
不僅節(jié)約時(shí)間,提高效率,而且這些 頂尖高手寫的代碼的魯棒性 都很好。
沒必要重復(fù)造輪子,遇到定制需求,萬不得已再自己寫。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
spring boot security設(shè)置忽略地址不生效的解決
這篇文章主要介紹了spring boot security設(shè)置忽略地址不生效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
使用ProGuard混淆JavaWeb項(xiàng)目代碼的操作步驟
在開發(fā)JavaWeb應(yīng)用時(shí),為了保護(hù)源代碼不被輕易反編譯和閱讀,通常會(huì)采用代碼混淆技術(shù),ProGuard是一個(gè)廣泛使用的免費(fèi)工具,可以用來優(yōu)化、縮小和混淆Java字節(jié)碼,本文將詳細(xì)介紹如何使用ProGuard對(duì)JavaWeb項(xiàng)目進(jìn)行代碼混淆,需要的朋友可以參考下2025-05-05
IDEA強(qiáng)制清除Maven緩存的實(shí)現(xiàn)示例
清除項(xiàng)目緩存是一個(gè)常見的操作,本文主要介紹了IDEA強(qiáng)制清除Maven緩存的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07
SpringBoot指標(biāo)監(jiān)控功能實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot指標(biāo)監(jiān)控功能實(shí)現(xiàn),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06

