最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java刪除文件夾的實現(xiàn)方式

 更新時間:2025年07月10日 08:47:50   作者:bruce128  
用戶發(fā)現(xiàn)File.delete()無法刪除非空目錄,嘗試自定義遞歸刪除方法后,發(fā)現(xiàn)commons-io已提供FileUtils.deleteDirectory,建議優(yōu)先使用第三方庫避免重復(fù)造輪子,提升效率與代碼可靠性

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)文章

  • SpringBoot中項目如何讀取外置logback配置文件

    SpringBoot中項目如何讀取外置logback配置文件

    這篇文章主要介紹了SpringBoot中項目如何讀取外置logback配置文件問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • java服務(wù)器端微信、支付寶支付和退款功能

    java服務(wù)器端微信、支付寶支付和退款功能

    這篇文章主要為大家詳細介紹了java服務(wù)器端微信、支付寶支付和退款功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • mybatis源碼解讀之executor包懶加載功能?

    mybatis源碼解讀之executor包懶加載功能?

    這篇文章主要介紹了mybatis源碼解讀之executor包懶加載功能,mybatis的懶加載的實現(xiàn)由executor包的loader子包支持,下面文章詳細內(nèi)容需要的小伙伴可以參考一下
    2022-02-02
  • Java開發(fā)實現(xiàn)的Socket雙向通信功能示例

    Java開發(fā)實現(xiàn)的Socket雙向通信功能示例

    這篇文章主要介紹了Java開發(fā)實現(xiàn)的Socket雙向通信功能,結(jié)合實例形式分析了java基于socket實現(xiàn)的服務(wù)器端與客戶端雙向通信相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • Mybatis?如何開啟控制臺打印sql語句

    Mybatis?如何開啟控制臺打印sql語句

    這篇文章主要介紹了Mybatis?如何開啟控制臺打印sql語句問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Java中如何將String轉(zhuǎn)JSONObject

    Java中如何將String轉(zhuǎn)JSONObject

    這篇文章主要介紹了Java中如何將String轉(zhuǎn)JSONObject,String類型轉(zhuǎn)JSONObject,下面有兩種方式可以進行轉(zhuǎn)換,本文結(jié)合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • java_時間戳與Date_相互轉(zhuǎn)化的實現(xiàn)代碼

    java_時間戳與Date_相互轉(zhuǎn)化的實現(xiàn)代碼

    本篇文章是對java_時間戳與Date_相互轉(zhuǎn)化的實現(xiàn)代碼進行了詳細的分析介紹,需要的朋友參考下如下。
    2016-11-11
  • 使用IDEA向Gitee提交SpringBoot項目進行遠程管理

    使用IDEA向Gitee提交SpringBoot項目進行遠程管理

    本文主要介紹了使用IDEA向Gitee提交SpringBoot項目進行遠程管理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • Java使用Kaptcha實現(xiàn)簡單的驗證碼生成器

    Java使用Kaptcha實現(xiàn)簡單的驗證碼生成器

    這篇文章主要為大家詳細介紹了Java如何使用Kaptcha實現(xiàn)簡單的驗證碼生成器,文中的示例代碼講解詳細,具有一定的借鑒價值,有需要的小伙伴可以參考下
    2024-02-02
  • Java中四種訪問權(quán)限資料整理

    Java中四種訪問權(quán)限資料整理

    這篇文章主要介紹了 Java中四種訪問權(quán)限總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2017-05-05

最新評論

卓资县| 密云县| 通道| 弥渡县| 洞口县| 兴城市| 沾化县| 涟源市| 醴陵市| 石首市| 佛山市| 桂东县| 慈利县| 兴国县| 新兴县| 渑池县| 垦利县| 临邑县| 诏安县| 福建省| 鸡东县| 克山县| 哈巴河县| 巴东县| 井冈山市| 松溪县| 万全县| 定日县| 勐海县| 秭归县| 鄂温| 平安县| 灵山县| 额尔古纳市| 彩票| 彭州市| 阿拉善盟| 曲靖市| 葫芦岛市| 兰坪| 东海县|