在Windows操作系统中,在文件路径(\
)中使用反斜杠c:\mytext.txt
。在linux / unix OS中,正斜杠/
用于文件路径(/home/mytext.txt
)。给定dir路径file_dir
和file_name
,如何为操作系统找到正确的slash
并组装文件路径(操作系统可以是Windows还是Linux)? file_dir + '/' + file name
或file_dir + '\' + file_name
?什么逃避斜线?
答案 0 :(得分:8)
使用与操作系统无关的File.join
:
File.join("my", "dir", "and", "my", "file")
#=> my\dir\and\my\file for Windows
#=> my/dir/and/my/file for unix
答案 1 :(得分:2)
如果可能,Ruby将在不同的操作系统约定之间转换路径名。例如,在Windows系统上,文件名“/gumby/ruby/test.rb”将打开为“\ gumby \ ruby \ test.rb”。在Ruby字符串中指定Windows样式的文件名时,请记住转义反斜杠:
"c:\\gumby\\ruby\\test.rb"
所以,不要为自己做更多工作。使用向前斜线来清除牙齿并删除倾斜牙签综合症串。
如果你需要知道要使用哪个路径分隔符,总是File::ALT_SEPARATOR
但是要弄乱它或者直接编写访问它的代码而不是让Ruby做正确的事情是很少需要的。所有正在进行连接和拆分的File方法都已荣誉File::ALT_SEPARATOR
。
[...] File :: ALT_SEPARATOR可用于获取特定于平台的分隔符。
答案 2 :(得分:1)
Ruby使用/
作为Windows和Unix系统的路径分隔符:
PS C:\Users\Administrator> irb
irb(main):001:0> Dir.pwd
=> "C:/Users/Administrator"
irb(main):002:0> File.join(Dir.pwd,'testing.txt')
=> "C:/Users/Administrator/testing.txt"
irb(main):003:0> File.read(File.join(Dir.pwd,'testing.txt'))
=> "foo bar"
因此,如果您真的想要使用字符串,您也可以这样做:
irb(main):004:0> File.read('C:/Users/Administrator/testing.txt')
=> "foo bar"