Ruby URI模块生成非法的文件URI

时间:2012-05-13 13:01:36

标签: ruby uri

这是Converting file path to URI的后续问题。

考虑:

require 'uri'

uri = URI.join('file:///', '/home/user/dir1/dir2/dir3/name.ext')
 => #<URI::Generic:0x0000000263fcc0 URL:file:/home/user/dir1/dir2/dir3/name.ext>

uri.to_s
 => "file:/home/user/dir1/dir2/dir3/name.ext"

结果不是非法的吗?不应该是"file://home/...",用双斜线?

1 个答案:

答案 0 :(得分:5)

没有。 file://home/...指的是名为“home”的主机上的文件。完整语法为file:///home/...,其中三个斜杠,其中空主机组件指示本地主机。但是,大多数识别“文件”方案的URI解析器也只接受file:/pathname一个斜杠;缺少双斜杠意味着跳过主机组件。