欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java中刪除文件/文件夾的3種方法示例小結(jié)

 更新時間:2023年10月10日 11:41:37   作者:程序修理員  
這篇文章主要介紹了java中刪除文件/文件夾的3種方法示例小結(jié),第一種是通過io刪除文件,第二種是通過Files.walk刪除文件,第三種是通過 Files.walkFileTree刪除文件,本文結(jié)合示例代碼給大家介紹的非常詳細,需要的朋友參考下吧

java中刪除文件/文件夾的3種方法

1、通過io刪除文件

    /**
     * 通過遞歸逐層刪除文件信息
     *
     * @param filePath
     */
    public static void deleteFileByIO(String filePath) {
        File file = new File(filePath);
        File[] list = file.listFiles();
        if (list != null) {
            for (File temp : list) {
                deleteFileByIO(temp.getAbsolutePath());
            }
        }
        file.delete();
    }

2、通過Files.walk刪除文件

    /**
     * 使用Files.walk遍歷文件夾(包含子文件夾及子其文件),遍歷結(jié)果是一個Stream
     * 對每一個遍歷出來的結(jié)果進行處理,調(diào)用Files.delete就可以了。
     *
     * @param filePath
     * @throws IOException
     */
    public static void deleteFileByStream(String filePath) throws IOException {
        Path path = Paths.get(filePath);
        try (Stream<Path> walk = Files.walk(path)) {
            walk.sorted(Comparator.reverseOrder())
                    .forEach(FileUtil::deleteDirectoryStream);
            // FileUtil為類名
        }
    }
    private static void deleteDirectoryStream(Path path) {
        try {
            Files.delete(path);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

3、通過 Files.walkFileTree刪除文件

 /**
     * 使用walkFileTree方法遍歷整個文件目錄樹,使用FileVisitor處理遍歷出來的每一項文件或文件夾
     * FileVisitor的visitFile方法用來處理遍歷結(jié)果中的“文件”,所以我們可以在這個方法里面刪除文件
     * @param filePath
     * @throws IOException
     */
    public static void deleteFileByWalkFileTree(String filePath) throws IOException {
        Path path = Paths.get(filePath);
        Files.walkFileTree(path,
                new SimpleFileVisitor<Path>() {
                    // 先去遍歷刪除文件
                    @Override
                    public FileVisitResult visitFile(Path file,
                                                     BasicFileAttributes attrs) throws IOException {
                        Files.delete(file);
                        System.out.printf("文件被刪除 : %s%n", file);
                        return FileVisitResult.CONTINUE;
                    }
                    // 再去遍歷刪除目錄
                    @Override
                    public FileVisitResult postVisitDirectory(Path dir,
                                                              IOException exc) throws IOException {
                        Files.delete(dir);
                        System.out.printf("文件夾被刪除: %s%n", dir);
                        return FileVisitResult.CONTINUE;
                    }
                }
        );
    }

擴展:

java刪除文件或目錄的三種方法

一、所用工具

傳統(tǒng)刪除是利用IO流,本文利用NIO流實現(xiàn)。

二、常見幾種方法

1.傳統(tǒng)IO流

代碼如下(示例):

//調(diào)用
 File file = new File("E:/河南省鄉(xiāng)鎮(zhèn)點/GIS/");
 deleteFile(file);
//刪除文件夾及其文件
    public static void deleteFile(File file){
        //獲取目錄下子文件
        File[] files = file.listFiles();
        //遍歷該目錄下的文件對象
        for (File f : files) {
            //打印文件名
            System.out.println("文件名:" + f.getName());
            //文件刪除
            f.delete();
        }
        boolean delete = file.delete();
        System.out.println(delete);
    }

2.強制刪除(如若一次刪除失敗,進行多次強制刪除即可)

代碼如下(示例):

//調(diào)用
 File file = new File("E:/河南省鄉(xiāng)鎮(zhèn)點/GIS/");
 forceDelete(file);
//強制刪除
    public static boolean forceDelete(File file) {
        boolean result = file.delete();
        int tryCount = 0;
        while (!result && tryCount++ < 10) {
            System.gc(); //回收資源
            result = file.delete();
        }
        return result;
    }

3.利用NIO流

代碼如下(示例):

 Path path= Paths.get("E:\\河南省鄉(xiāng)鎮(zhèn)點\\GIS");
        Files.walkFileTree(path,new SimpleFileVisitor<>(){
            //遍歷刪除文件
            public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
                Files.delete(file);
                return FileVisitResult.CONTINUE;
            }
            //遍歷刪除目錄
            public FileVisitResult postVisitDirectory(Path dir,IOException exc) throws IOException{
                Files.delete(dir);
                return FileVisitResult.CONTINUE;
            }
        });

總結(jié)

利用NIO流的好處:
1.如果刪除失敗,可以給出錯誤的具體原因;
2.代碼不多,效率高。

到此這篇關(guān)于java中刪除文件/文件夾的3種方法的文章就介紹到這了,更多相關(guān)java刪除文件/文件夾內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring攔截器實現(xiàn)鑒權(quán)的示例代碼

    Spring攔截器實現(xiàn)鑒權(quán)的示例代碼

    本文主要介紹了Spring攔截器實現(xiàn)鑒權(quán)的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • 手動編譯并運行Java項目實現(xiàn)過程解析

    手動編譯并運行Java項目實現(xiàn)過程解析

    這篇文章主要介紹了手動編譯并運行Java項目實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • Java線程的6種狀態(tài)及切換教程

    Java線程的6種狀態(tài)及切換教程

    這篇文章主要給大家介紹了關(guān)于Java線程的6種狀態(tài)及切換教程,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 解決idea爆紅 cant resolve symbol String的問題解析

    解決idea爆紅 cant resolve symbol String的問題解析

    連著出差幾個禮拜沒有使用idea開發(fā)工具,突然一天打開電腦發(fā)現(xiàn)idea里的代碼全部爆紅,懵逼不如所措,很多朋友建議我按住Alt+回車設(shè)置jdk就能解決,但是仍然報錯,經(jīng)過幾個小時的倒騰最終解決,遇到此問題的朋友參考下本文吧
    2021-06-06
  • java分割字符串多種方法(附例子)

    java分割字符串多種方法(附例子)

    這篇文章主要給大家介紹了關(guān)于java分割字符串多種方法的相關(guān)資料,Java中有多種方法可以實現(xiàn)字符串分割,文中將每張方法都給出了代碼示例,需要的朋友可以參考下
    2023-10-10
  • 詳談java中int和Integer的區(qū)別及自動裝箱和自動拆箱

    詳談java中int和Integer的區(qū)別及自動裝箱和自動拆箱

    這篇文章主要介紹了詳談java中int和Integer的區(qū)別及自動裝箱和自動拆箱,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 詳解spring boot中使用JdbcTemplate

    詳解spring boot中使用JdbcTemplate

    JdbcTemplate 是在JDBC API基礎(chǔ)上提供了更抽象的封裝,并提供了基于方法注解的事務(wù)管理能力。 通過使用SpringBoot自動配置功能并代替我們自動配置beans,下面給大家介紹spring boot中使用JdbcTemplate相關(guān)知識,一起看看吧
    2017-04-04
  • Java反射如何有效的修改final屬性值詳解

    Java反射如何有效的修改final屬性值詳解

    最近在工作中遇到一個需求,要利用反射對修飾符為final的成員變量進行修改,所以這篇文章主要給大家介紹了關(guān)于Java反射如何有效的修改final屬性值的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對需要的朋友可以參考下。
    2017-08-08
  • 深入理解Spring事務(wù)的傳播行為

    深入理解Spring事務(wù)的傳播行為

    Spring在TransactionDefinition接口中規(guī)定了7種類型的事務(wù)傳播行為。下面這篇文章主要給大家介紹了關(guān)于Spring事務(wù)傳播行為的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • java8升級java21方法步驟(完整pom文件升級及代碼修改)

    java8升級java21方法步驟(完整pom文件升級及代碼修改)

    在從Java?8升級至Java?211的過程中,需要對多個POM文件進行升級,涉及parent、web、service等模塊,文中通過代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用java具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-11-11

最新評論