Java 7 - LinkOption - 为什么NOFOLLOW_LINKS是唯一可用的选项?

时间:2013-11-18 16:22:39

标签: java java-7 nio symlink linkoption

我认为标题说明了一切。我如何指定FOLLOW_LINKS?为什么只用一个选项创建一个枚举?例如,方法java.nio.file.Files.getLastModifiedTime(Path,LinkOption ...)将一个LinkOption-s数组作为参数。你必须通过一些东西,但你只能通过一个可用的选项。这令我感到惊讶,并希望了解更多信息。

3 个答案:

答案 0 :(得分:3)

以下链接是默认行为。即,如果您未指定NOFOLLOW_LINKS,则会遵循链接。

来自Files.getLastModifiedTime()方法的documentation(强调我的):

  

options数组可用于指示在文件是符号链接的情况下如何处理符号链接。 默认情况下,会遵循符号链接并读取链接最终目标的文件属性。如果存在选项NOFOLLOW_LINKS,则不会跟踪符号链接。

答案 1 :(得分:1)

让我感到困惑的是,Files.exists()的LinkOptions参数是一个vararg参数,这个事实我没有立刻认出来......你可能只是把它留下。将其设置为null将给出异常。

答案 2 :(得分:1)

许多NIO.2方法都使用varargs传递选项,即使存在 只有一个枚举值可用。这种方法的优势,而不是仅仅通过一个 布尔参数,是面向未来的。这些方法签名与 当将来有可用的选项时,Java语言将成为现实。

引自“ OCP Oracle认证专业Java SE 11程序员II”