1

Java 奇怪的文件协议处理是怎么回事?我的意思是在 Windows 上,UNC 路径变成了 5 个斜杠,我明白为什么会这样,但是在 linux 上,绝对路径变成了file:/local/path/to/file 不应该有三个斜杠吗?我假设 Java 的作者不是无能的,那么有没有解释为什么这是可以接受的?

4

1 回答 1

3

让我们从URI 类的文档开始:

分层 URI 需要根据语法进行进一步解析

[方案:][//权限][路径][?查询][#片段]

如您所见,权限是可选的。URI 规范第 3 节支持这一点:

方案和路径组件是必需的,但路径可能为空(无字符)。存在权限时,路径必须为空或以斜杠 ("/") 字符开头。当权限不存在时,路径不能以两个斜杠字符(“//”)开头。

file:URI可以有一个权限分隔符 ,//后面有一个有效的空权限,但它没有任何作用,所以省略它也没有什么坏处。它仍然是一个完全兼容的 URI。

于 2017-06-23T15:42:20.657 回答