FileVistror类的用法
这是NIO类提供的遍历指定目录下的所有文件和子目录的方法。
是使用FIles的walkFileTree方法,其中有一个起始路径,还有一个FileVisitor这个访问器。一旦遍历文件,都会自动触发这个访问器中的方法。其中有四个方法
FileVisitResult preVisitDirectory(T var1, BasicFileAttributes var2) throws IOException; FileVisitResult visitFile(T var1, BasicFileAttributes var2) throws IOException; FileVisitResult visitFileFailed(T var1, IOException var2) throws IOException; FileVisitResult postVisitDirectory(T var1, IOException var2) throws IOException; }
实际使用中,使用
public class SimpleFileVisitor<T> implements FileVisitor<T> { protected SimpleFileVisitor() { } public FileVisitResult preVisitDirectory(T dir, BasicFileAttributes attrs) throws IOException { Objects.requireNonNull(dir); Objects.requireNonNull(attrs); return FileVisitResult.CONTINUE; } public FileVisitResult visitFile(T file, BasicFileAttributes attrs) throws IOException { Objects.requireNonNull(file); Objects.requireNonNull(attrs); return FileVisitResult.CONTINUE; } public FileVisitResult visitFileFailed(T file, IOException exc) throws IOException { Objects.requireNonNull(file); throw exc; } public FileVisitResult postVisitDirectory(T dir, IOException exc) throws IOException { Objects.requireNonNull(dir); if (exc != null) { throw exc; } else { return FileVisitResult.CONTINUE; } } }
这个类,然后选择需要重写的方法即可。
例如
public static void main(String[] args) throws IOException { Path path = Files.walkFileTree(Paths.get("G:", "wht", "ideaPro"), new SimpleFileVisitor<Path>() { @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { Objects.requireNonNull(file); Objects.requireNonNull(attrs); System.out.println("正在访问:"+file+"文件"); if(file.endsWith("FileVistorTest.java")){ System.out.println("----找到文件------"); return FileVisitResult.TERMINATE; } return FileVisitResult.CONTINUE; } public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException { Objects.requireNonNull(dir); Objects.requireNonNull(attrs); System.out.println("正在访问:"+dir+"路径"); return FileVisitResult.CONTINUE; } }); }