2014-04-17 54 views
-2

因此,我在Ruby中创建了这个项目,并且从某处复制了此代码,并且它不工作。如何在Ruby中创建目录

代码:

dirname = File.dirname("C:/ProgramFiles/RubyLists") 

require 'fileutils' 

unless File.directory?(dirname) 
    File.mkdir(dirname) 
end #This block will make the directory. 

print("Mk. Worked.") 

错误:

C:/Users/User/RubymineProjects/rubylists/main.rb:6:in `<top (required)>': undefined method `makedir' for File:Class (NoMethodError) 
    from -e:1:in `load' 
    from -e:1:in `<main>' 

如果你不再需要的信息让我知道,如果我可以,我会提供它。谢谢!

+2

包含的代码,错误在这里的帖子请.. –

+0

我试过了,它会搞砸了。我会看看我能做什么。 – Agoldfish

+0

错误消息提到了一个'makedir'方法,无法在你发布的代码中看到,你能解决这个问题吗? – toro2k

回答

2

FileUtils::mkdir存在,而不是File::mkdir

因此将File.mkdir(dirname)更改为FileUtils.mkdir(dirname)

编写代码: -

dirname = "C:/ProgramFiles/RubyLists" 

require 'fileutils' 

unless Dir.exist?(dirname) 
    FileUtils.mkdir(dirname) 
end #This block will make the directory. 

print("Mk. Worked.") 
+0

这样做,除了该文件夹没有出现在程序文件中。 – Agoldfish

+0

查看['Pathname'](http://ruby-doc.org/stdlib-2.1.1/libdoc/pathname/rdoc/Pathname.html)类,它是'File'的一种外观,'FileUtils','Dir'等等。 – toro2k

+1

@Agoldfish这是因为你的dirname是“ProgramFiles” – MxyL

1

由于您使用FileUtils可以使用mkdir

FileUtils.mkdir("a/b/c") 

但如果任何父文件夹不存在,则只会崩溃。我通常使用mkdir_p因为它递归地创建目录,需要(除非我希望它崩溃,例如,如果该文件夹的名字是错的)

0
# function for create folder 
def createFolder(folderName) 
@folderName=folderName 
    if File.directory?(@folderName) 
    return "The Folder "[email protected]+" already exist" 
    else 
    Dir.mkdir(@folderName,0700) 
    return "Created" 
    end 
end 

调用它只需键入

createFolder('folderName') 
+0

这非常丑陋和可怕。这不工作“+ @ folderName +”... –

+0

@Monk_Code它很奇怪,很丑,但它确实有效。 –