java中删除文件/文件夹的3种方法示例小结
作者:程序修理员
这篇文章主要介绍了java中删除文件/文件夹的3种方法示例小结,第一种是通过io删除文件,第二种是通过Files.walk删除文件,第三种是通过 Files.walkFileTree删除文件,本文结合示例代码给大家介绍的非常详细,需要的朋友参考下吧
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遍历文件夹(包含子文件夹及子其文件),遍历结果是一个Stream * 对每一个遍历出来的结果进行处理,调用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方法用来处理遍历结果中的“文件”,所以我们可以在这个方法里面删除文件 * @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删除文件或目录的三种方法
一、所用工具
传统删除是利用IO流,本文利用NIO流实现。
二、常见几种方法
1.传统IO流
代码如下(示例):
//调用 File file = new File("E:/河南省乡镇点/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.强制删除(如若一次删除失败,进行多次强制删除即可)
代码如下(示例):
//调用 File file = new File("E:/河南省乡镇点/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:\\河南省乡镇点\\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; } });
总结
利用NIO流的好处:
1.如果删除失败,可以给出错误的具体原因;
2.代码不多,效率高。
到此这篇关于java中删除文件/文件夹的3种方法的文章就介绍到这了,更多相关java删除文件/文件夹内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!