[ruby] 루비와 함께 존재하지 않는 디렉토리 만들기

다음 코드로 디렉토리를 만들려고합니다.

Dir.mkdir("/Users/Luigi/Desktop/Survey_Final/Archived/Survey/test")
    unless File.exists?("/Users/Luigi/Desktop/Survey_Final/Archived/Survey/test")  

그러나이 오류가 발생합니다.

해당 파일 또는 디렉토리가 없습니다-/ Users / Luigi / Desktop / Survey_Final / Archived / Survey / test (Errno :: ENOENT)

Dir.mkdir위 의 명령문 으로이 디렉토리가 작성되지 않는 이유는 무엇 입니까?



답변

중첩 된 디렉토리를 작성하려고합니다. 가정 foo이 존재하지 않습니다, 당신은받을 것이다 no such file or directory오류를 위해 :

Dir.mkdir 'foo/bar'
# => Errno::ENOENT: No such file or directory - 'foo/bar'

중첩 된 디렉토리를 한 번에 작성하려면 FileUtils다음이 필요합니다.

require 'fileutils'
FileUtils.mkdir_p 'foo/bar'
# => ["foo/bar"]

Edit2 : 당신은 사용할 필요가 없습니다 FileUtils, 당신은 시스템 호출을 할 수 있습니다 (@mu의 업데이트는 너무 짧은 주석입니다) :

> system 'mkdir', '-p', 'foo/bar' # worse version: system 'mkdir -p "foo/bar"'
=> true

그러나 일부 시스템에서는 사용할 수없는 외부 ‘도구’를 사용함에 따라 (적어도 나에게는) 더 나쁜 접근 방식으로 보입니다 (그러나 내가없는 시스템은 거의 상상할 수 mkdir없지만 누가 아는가).


답변

간단한 방법 :

directory_name = "name"
Dir.mkdir(directory_name) unless File.exists?(directory_name)


답변

또 다른 간단한 방법 :

Dir.mkdir('tmp/excel') unless Dir.exist?('tmp/excel')


답변

어때요 Dir.mkdir('dir') rescue nil?


답변