2016-05-17 80 views
1

我有這樣的語句創建嵌套目錄:打開目錄,並創建新的文件

require 'fileutils' 
FileUtils::mkdir_p ''+project_name+'/new_folder' 

我想補充,例如一個名爲README.mdnew_folder新文件。有沒有辦法用Ruby來完成?

+0

什麼是' '' +'呢? – sawa

+0

它抓取用戶的輸入並將其創建爲主文件的名稱。例如:'project_name = gets.chomp' – Raymond

+1

我相信@sawa意味着沒有必要使用空字符串,Raymond。 –

回答

4

您需要做的僅僅

path_name = "#{project_name}/new_folder" 
FileUtils::mkdir_p path_name 
FileUtils::touch("#{path_name}/README.md") 

這將創建一個名爲README.mdproject_name/new_folder目錄內的空文件。

+0

它工作正常。謝謝。 – Raymond

1

你可以像下面這樣做

2.1.2 :015 > project_name = "foo" 
=> "foo" 
2.1.2 :016 > fld = FileUtils::mkdir_p "#{project_name}/new_folder" 
=> ["foo/new_folder"] 
2.1.2 :017 > FileUtils.touch "#{fld[0]}/README.md" if fld 
=> ["foo/new_folder/README.md"] 

[[email protected] ~/foo/new_folder]$ ls -la 
total 0 
drwxr-xr-x 3 retgoat staff 102 17 май 17:44 . 
[email protected] 119 retgoat staff 4046 17 май 17:45 .. 
-rw-r--r-- 1 retgoat staff  0 17 май 17:44 README.md 

請注意我沒有測試你的代碼,但如果它適合你,下面的例子將創建內部new_folder

1

文件README.md爲建設filespecs ,最好使用File.join方法。這是更高的級別,可處理任何額外或缺少的目錄分隔符,併爲正在運行的操作系統使用正確的文件分隔符。

例如:

2.3.0 :006 > project_name = 'my_project' 
=> "my_project" 
2.3.0 :009 > filespec = File.join(project_name, 'new_folder', 'README.md') 
=> "my_project/new_folder/README.md" 

當前 'new_folder' 後所提供的斜槓,它仍然有效:

2.3.0 :010 > filespec = File.join(project_name, '/new_folder/', 'README.md') 
=> "my_project/new_folder/README.md" 
相關問題