我为什么要使用File.join()?

时间:2010-08-27 09:11:24

标签: ruby

我想知道为什么要使用:

puts "In folder #{File.join ENV[HOME], projects}"

而不是:

puts "In folder #{ENV[HOME]/projects}"

我知道File.join将根据操作系统放置适当的分隔符(/ vs \)。

该脚本已经与您正在使用的ruby版本,已安装的gem等等紧密相关。我的脚本往往不像ORM,(在这种情况下)独立于操作系统。

我永远不会在Windows上运行它(其他依赖项将使脚本无法工作)。

所以似乎没有一个强有力的理由使用它,对吗?

4 个答案:

答案 0 :(得分:13)

以下任何一项:

File.join("first","second")
File.join("first/","second")
File.join("first","/second")
File.join("first/","/second")

将返回

=> "first/second"

这对你来说是个好理由吗?

这只是我能想到的一个例子。

实际上,你的目标不是连接2个字符串,你的目标是创建一个路径。这似乎是向我File.join使用{{1}}的强烈理由。

答案 1 :(得分:8)

没有使用Ruby,但我希望Path.join能够处理极端情况,例如以或不使用目录分隔符结束的路径。此外,它比字符串连接更清楚地表达意图,清晰度是恕我直言几乎总是一个好主意。

答案 2 :(得分:1)

我希望join能够优雅地处理角落案例,例如ENV[HOME]由于某些奇怪的原因而为空时。

答案 3 :(得分:1)

除了其他答案之外,您的代码将更加便携,无论unix / windows /等,都将使用正确的分隔符。