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>() {// 先去遍历删除文件@Overridepublic FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {Files.delete(file);System.out.printf("文件被删除 : %s%n", file);return FileVisitResult.CONTINUE;}// 再去遍历删除目录@Overridepublic FileVisitResult postVisitDirectory(Path dir,IOException exc) throws IOException {Files.delete(dir);System.out.printf("文件夹被删除: %s%n", dir);return FileVisitResult.CONTINUE;}});}