2014-04-17 100 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它很奇怪,很醜,但它確實有效。 –