【问题标题】:Why is Path.getFileName("/") inconsistent with "basename /"?为什么 Path.getFileName("/") 与 "basename /" 不一致?
【发布时间】:2021-06-16 15:54:40
【问题描述】:

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

不过,对于 UNIX 文件系统的根,Paths.get("/").getParent()Paths.get("/").getFileName() 都返回 null,这似乎不一致:

$ basename /
/
$ dirname /
/

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

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

返回一个空字符串。

为什么?

【问题讨论】:

  • 你的问题是“JDK为什么这样设计”或者“JDK是怎么这样设计的”?

标签: java unix nio


【解决方案1】:

为什么?

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

  • getParent() - “返回父路径,如果此路径没有父路径,则返回 null。”

    显然,根目录没有父目录。

  • getFileName() - “返回代表文件或目录名称的路径,如果此路径包含零个元素,则返回 null。”

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多