2016-05-17 6 views
1

У меня есть это утверждение, что создает вложенные каталоги:Открыть каталог и создать новый файл

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

Я хочу добавить, например, новый файл с именем README.md внутри new_folder. Есть ли способ сделать это с Ruby?

+0

Что такое ' '' + 'для? – sawa

+0

Он захватывает вход пользователя и создает его как имя основного файла. ex: 'project_name = gets.chomp' – Raymond

+1

Я считаю, что @sawa означает, что пустая строка '' не нужна, Раймонд. –

ответ

4

Вам просто нужно сделать

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

Это создаст пустой файл с именем README.md внутри project_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 

Пожалуйста, обратите внимание, я не проверял свой код, но если он работает для вас, следующий пример создаст файл README.md внутри new_folder

1

Для строительства 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" 
Смежные вопросы