为什么 Path.getFileName("/") 和 "basename /" 不一致?
Why is Path.getFileName("/") inconsistent with "basename /"?
对于所有其他路径,sun.nio.fs.UnixPath
实现(其 getParent()
and getFileName()
方法)似乎在很大程度上与 dirname
和 basename
实用程序兼容,是任何 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
如果此路径有零个元素."
路径 /
中没有“元素”,其中“元素”定义为 分隔符之间的文本。
对于所有其他路径,sun.nio.fs.UnixPath
实现(其 getParent()
and getFileName()
方法)似乎在很大程度上与 dirname
和 basename
实用程序兼容,是任何 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
如果此路径有零个元素."路径
/
中没有“元素”,其中“元素”定义为 分隔符之间的文本。