为什么我不能在路径名对象中使用“mkdir”?
问题描述:
我最近一直在试用Pathname lib,我想要做的一件事就是使用mkdir
来创建一些目录。为什么我不能在路径名对象中使用“mkdir”?
我抬起头文件,它说,它包装了mkdir
,但每次我尝试使用它我真的收到此错误:
irb(main):006:0> p = Pathname.new('/tmp')
=> #<Pathname:/tmp>
irb(main):007:0> a = p.mkdir("123adam")
TypeError: can't convert String into Integer
from /usr/lib/ruby/1.8/pathname.rb:975:in `mkdir'
from /usr/lib/ruby/1.8/pathname.rb:975:in `mkdir'
from (irb):7
from /usr/lib/ruby/1.8/fileutils.rb:1589
谁能解释什么我真的做错了。
答
您需要使用路径名指定要创建的目录,然后致电mkdir
。
这应该工作:
p = Pathname.new('/tmp/123adam')
p.mkdir
您可以提供的参数是新目录的权限。
答
出于兴趣,为什么你“不能把字符串转换成整数”的原因是因为Pathname.mkdir
实际上是围绕Dir.mkdir
包装如下:
def mkdir(*args) Dir.mkdir(@path, *args) end
由Pathname
对象表示的路径传递作为Dir.mkdir
的第一个参数,然后是传递给Pathname.mkdir
的任何参数。 Dir.mkdir
的第二个参数是您希望创建的目录具有的数字访问权限。因此,在您的示例中,"123adam"
正在传递给预计数量为Dir.mkdir
的位置。
ahhhh现在我明白了!非常感谢! – robodisco 2010-01-20 12:37:16
或者:'(p +“123adam”)。mkdir' – 2012-02-12 21:19:29