java中刪除文件/文件夾的3種方法示例小結(jié)
java中刪除文件/文件夾的3種方法
1、通過(guò)io刪除文件
/** * 通過(guò)遞歸逐層刪除文件信息 * * @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、通過(guò)Files.walk刪除文件
/** * 使用Files.walk遍歷文件夾(包含子文件夾及子其文件),遍歷結(jié)果是一個(gè)Stream * 對(duì)每一個(gè)遍歷出來(lái)的結(jié)果進(jìn)行處理,調(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、通過(guò) Files.walkFileTree刪除文件
/** * 使用walkFileTree方法遍歷整個(gè)文件目錄樹(shù),使用FileVisitor處理遍歷出來(lái)的每一項(xiàng)文件或文件夾 * FileVisitor的visitFile方法用來(lái)處理遍歷結(jié)果中的“文件”,所以我們可以在這個(gè)方法里面刪除文件 * @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; } } ); }
擴(kuò)展:
java刪除文件或目錄的三種方法
一、所用工具
傳統(tǒng)刪除是利用IO流,本文利用NIO流實(shí)現(xiàn)。
二、常見(jiàn)幾種方法
1.傳統(tǒng)IO流
代碼如下(示例):
//調(diào)用 File file = new File("E:/河南省鄉(xiāng)鎮(zhèn)點(diǎn)/GIS/"); deleteFile(file); //刪除文件夾及其文件 public static void deleteFile(File file){ //獲取目錄下子文件 File[] files = file.listFiles(); //遍歷該目錄下的文件對(duì)象 for (File f : files) { //打印文件名 System.out.println("文件名:" + f.getName()); //文件刪除 f.delete(); } boolean delete = file.delete(); System.out.println(delete); }
2.強(qiáng)制刪除(如若一次刪除失敗,進(jìn)行多次強(qiáng)制刪除即可)
代碼如下(示例):
//調(diào)用 File file = new File("E:/河南省鄉(xiāng)鎮(zhèn)點(diǎn)/GIS/"); forceDelete(file); //強(qiáng)制刪除 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)點(diǎ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.如果刪除失敗,可以給出錯(cuò)誤的具體原因;
2.代碼不多,效率高。
到此這篇關(guān)于java中刪除文件/文件夾的3種方法的文章就介紹到這了,更多相關(guān)java刪除文件/文件夾內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot整合shiro多驗(yàn)證登錄功能的實(shí)現(xiàn)(賬號(hào)密碼登錄和使用手機(jī)驗(yàn)證碼登錄)
這篇文章給大家介紹springboot整合shiro多驗(yàn)證登錄功能的實(shí)現(xiàn)方法,包括賬號(hào)密碼登錄和使用手機(jī)驗(yàn)證碼登錄功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2021-07-07SpringBoot項(xiàng)目使用mybatis-plus逆向自動(dòng)生成全套代碼
在JavaWeb工程中,每一個(gè)SSM新項(xiàng)目或者說(shuō)是SpringBoot項(xiàng)目也好,都少不了model、controller、service、dao等層次的構(gòu)建。使用mybatis-plus逆向可以自動(dòng)生成,感興趣的可以了解一下2021-09-09HashSet底層竟然是HashMap實(shí)現(xiàn)問(wèn)題
這篇文章主要介紹了HashSet底層竟然是HashMap實(shí)現(xiàn)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07Spring 自動(dòng)裝配的二義性實(shí)例解析
這篇文章主要介紹了Spring 自動(dòng)裝配的二義性實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11