java刪除文件夾的實現(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.
意即,刪除文件或者目錄,但是如果是目錄,則這個目錄必須是空的才能被刪除。也就是說,要刪一個非空文件夾,直接調(diào)delete方法是無法達到目的的。
看到這個api說明時,我的第一想法是,用 先根遍歷序遞歸刪除 文件夾。
搞定了這個工具方法和單元測試
/**
* 先根遍歷序遞歸刪除文件夾
*
* @param dirFile 要被刪除的文件或者目錄
* @return 刪除成功返回true, 否則返回false
*/
public static boolean deleteFile(File dirFile) {
// 如果dir對應(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ǔ)的工具方法,肯定有第三方工具類提供支持,自己再寫一遍是浪費時間。于是我開始查guava和commons-io的工具類。
在commons-io包里找到了一個能達到同樣目的的方法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.
意即,遞歸的刪除一個目錄。
自己在寫一些常規(guī)的工具方法時,最好先看看commons包或者guava包有沒有提供,如果提供了,就用他們的。
不僅節(jié)約時間,提高效率,而且這些 頂尖高手寫的代碼的魯棒性 都很好。
沒必要重復(fù)造輪子,遇到定制需求,萬不得已再自己寫。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
spring boot security設(shè)置忽略地址不生效的解決
這篇文章主要介紹了spring boot security設(shè)置忽略地址不生效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07
SpringBoot指標(biāo)監(jiān)控功能實現(xiàn)
這篇文章主要介紹了SpringBoot指標(biāo)監(jiān)控功能實現(xiàn),本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-06-06

