-
- 所有已知实现类:
-
SimpleFileVisitor
public interface FileVisitor<T>
文件访问者 该接口的实现提供给Files.walkFileTree
方法来访问文件树中的每个文件。使用示例:假设我们要删除文件树。 在这种情况下,删除目录中的条目后,应删除每个目录。
Path start = ... Files.walkFileTree(start, new SimpleFileVisitor<Path>() { @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { Files.delete(file); return FileVisitResult.CONTINUE; } @Override public FileVisitResult postVisitDirectory(Path dir, IOException e) throws IOException { if (e == null) { Files.delete(dir); return FileVisitResult.CONTINUE; } else { // directory iteration failed throw e; } } });
此外,假设我们要将文件树复制到目标位置。 在这种情况下,应遵循符号链接,并在目录中的条目复制之前创建目标目录。
final Path source = ... final Path target = ... Files.walkFileTree(source, EnumSet.of(FileVisitOption.FOLLOW_LINKS), Integer.MAX_VALUE, new SimpleFileVisitor<Path>() { @Override public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException { Path targetdir = target.resolve(source.relativize(dir)); try { Files.copy(dir, targetdir); } catch (FileAlreadyExistsException e) { if (!Files.isDirectory(targetdir)) throw e; } return CONTINUE; } @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { Files.copy(file, target.resolve(source.relativize(file))); return CONTINUE; } });
- 从以下版本开始:
- 1.7
-
-
方法摘要
所有方法 接口方法 抽象方法 Modifier and Type 方法 描述 FileVisitResult
postVisitDirectory(T dir, IOException exc)
在目录中的条目之后调用目录,并且已经访问了所有的后代。FileVisitResult
preVisitDirectory(T dir, BasicFileAttributes attrs)
在目录中的条目被访问之前调用一个目录。FileVisitResult
visitFile(T file, BasicFileAttributes attrs)
为目录中的文件调用。FileVisitResult
visitFileFailed(T file, IOException exc)
为无法访问的文件调用。
-
-
-
方法详细信息
-
preVisitDirectory
FileVisitResult preVisitDirectory(T dir, BasicFileAttributes attrs) throws IOException
在目录中的条目被访问之前调用一个目录。如果此方法返回
CONTINUE
,则会访问目录中的条目。 如果此方法返回SKIP_SUBTREE
或SKIP_SIBLINGS
,则目录(和任何后代)中的条目将不被访问。- 参数
-
dir
- 对目录的引用 -
attrs
- 目录的基本属性 - 结果
- 访问结果
- 异常
-
IOException
- 如果发生I / O错误
-
visitFile
FileVisitResult visitFile(T file, BasicFileAttributes attrs) throws IOException
为目录中的文件调用。- 参数
-
file
- 对该文件的引用 -
attrs
- 文件的基本属性 - 结果
- 访问结果
- 异常
-
IOException
- 如果发生I / O错误
-
visitFileFailed
FileVisitResult visitFileFailed(T file, IOException exc) throws IOException
为无法访问的文件调用。 如果文件的属性无法读取,该文件是无法打开的目录以及其他原因,则调用此方法。- 参数
-
file
- 对该文件的引用 -
exc
- 阻止文件被访问的I / O异常 - 结果
- 访问结果
- 异常
-
IOException
- 如果发生I / O错误
-
postVisitDirectory
FileVisitResult postVisitDirectory(T dir, IOException exc) throws IOException
在目录中的条目之后调用目录,并且已经访问了所有的后代。 当该目录的迭代过早完成(通过返回SKIP_SIBLINGS
的visitFile
方法或者在遍历目录时发生I / O错误),也会调用此方法。- 参数
-
dir
- 对目录的引用 -
exc
-null
如果目录的迭代完成没有错误; 否则会导致目录的迭代过早完成的I / O异常 - 结果
- 访问结果
- 异常
-
IOException
- 如果发生I / O错误
-
-