什么是SimpleFileVisitor的非递归定义?

时间:2019-09-18 00:50:16

标签: java file nio

Oracle的Java文档在https://docs.oracle.com/javase/7/docs/api/java/nio/file/SimpleFileVisitor.html上对SimpleFileVisitor有一个非常有用的定义:“具有默认行为的简单文件访问者,可以访问所有文件并重新抛出I / O错误。”但是,任何人都可以解释访问文件的含义或简单之处吗?

1 个答案:

答案 0 :(得分:3)

FileVisitor是一个对象,其回调方法被调用为Files.walkFileTree之类的方法,它遍历公共根目录下的整个文件层次结构。当遇到树中的每个文件或目录时,我们称其为“已访问”。这时,根据每个文件的性质,传递给walk方法的FileVisitor参数将调用其一个或多个方法。

documentation of SimpleFileVisitor实际上确实将其与FileVisitor界面区分开:

  

具有默认行为的简单文件访问者,可以访问所有文件并重新抛出I / O错误。

     

此类中的方法可能会受到其一般合同的约束。

SimpleFileVisitor实现FileVisitor的每个方法。每个实现的方法都返回一个FileVisitResult,该值告诉walk算法继续遍历树;这就是javadoc类中“访问所有文件”的含义。任何IOExceptions都会被传播,而不是被捕获和抑制;这就是javadoc类中的“重新抛出I / O错误”的意思。

“简单”部分意味着SimpleFileVisitor没有自身的功能。这是一个“空”类:每个方法除了允许继续遍历文件树之外什么都不做。

最后,类javadoc声明了该类的预期用途:子类应覆盖一个或多个方法。与所有面向对象的继承一样,该子类应遵守每种方法以及每种继承的类和接口的书面约定(javadoc)。

相关问题