2012-05-13 44 views
3

我有一个表示文件路径的字符串,例如“/home/user/dir1/dir2/dir3/name.ext”。现在我想将它转换为合法的URI(以“file://”开头的字符串等)。将文件路径转换为URI

如何在Ruby中执行此操作?

回答

5
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.scheme 
=> "file" 
uri.path 
=> "/home/user/dir1/dir2/dir3/name.ext" 
uri.to_s 
=> "file:/home/user/dir1/dir2/dir3/name.ext" 
+0

谢谢,但不是结果(uri.to_s)非法?不应该是“file:// home ...”吗? – ori

+0

@ user1372109它应该是'file:/// home/...'。 'file://'部分是方案,而第三个斜杠是路径的开始。 – d11wtq

+1

它可能看起来像一个错误,所以我打开了另一个线程:http://stackoverflow.com/questions/10571945/ruby-uri-module-produces-illegal-file-uri – ori