遞歸文件夾查找指定文件
-
方式一:java8新增api
public static void findFilesByPath1(Path dirPath) { try { Files.walkFileTree(dirPath, new SimpleFileVisitor<Path>() { @Override public FileVisitResult visitFile(Path filePath, BasicFileAttributes attrs) { if (filePath.toString().endsWith(".xml")) { System.out.println("find file = " + filePath.getFileName()); return FileVisitResult.CONTINUE; } return FileVisitResult.SKIP_SUBTREE; } //失敗淹冰,可能是文件沒(méi)有訪問(wèn)權(quán)限等樱拴,直接過(guò)濾掉 @Override public FileVisitResult visitFileFailed(Path filePath, IOException exception) throws IOException { if (exception instanceof AccessDeniedException) { return FileVisitResult.SKIP_SUBTREE; } return super.visitFileFailed(filePath, exception); } }); } catch (IOException e) { e.printStackTrace(); } }
-
方式二:遞歸方式
public static void findFilesByPath2(Path path) throws IOException { if (Files.isDirectory(path)) { Files.list(path).forEach(newPath -> { try { findFilesByPath2(newPath); } catch (IOException e) { // e.printStackTrace(); } }); } else { if (path.toString().endsWith(".xml")) { System.out.println("find file = " + path.getFileName()); } } }
調(diào)用方式:
findFilesByPath1(Paths.get("E:\\")); findFilesByPath2(Paths.get("E:\\"));