为什么 Path.getFileName("/") 和 "basename /" 不一致?

Why is Path.getFileName("/") inconsistent with "basename /"?

对于所有其他路径,sun.nio.fs.UnixPath 实现(其 getParent() and getFileName() 方法)似乎在很大程度上与 dirnamebasename 实用程序兼容,是任何 UNIX 系统的标准。

仍然,对于 UNIX 文件系统的根目录,Paths.get("/").getParent()Paths.get("/").getFileName() return null 似乎不一致:

$ basename /
/
$ dirname /
/

此外,getFileName() 的行为不同于旧的 java.io.File 实现:

Paths.get("/").toFile().getName();

return一个空字符串。

为什么?

Why?

因为 javadoc 是这么说的。问题已经链接到 javadoc,所以你只需要阅读它:

  • getParent() - "Returns 父路径,或者 null 如果此路径没有父路径."

    根目录显然没有父目录。

  • getFileName() - "Returns 表示文件或目录名称的路径,或者 null 如果此路径有零个元素."

    路径 / 中没有“元素”,其中“元素”定义为 分隔符之间的文本。