Я получаю следующую ошибку:
"Errno::ENOENT: No such file or directory"
когда я пытаюсь загрузить файл в каталог, который не существует.
Например:
ftp = Net::FTP.new('example.com')
ftp.login
files = ftp.chdir('pub/lang/ruby/contrib')
files = ftp.list('n*')
ftp.getbinaryfile('nif.rb-0.91.gz', 'pub/lang/ruby/contrib/nif.gz', 1024)
ftp.close
Однако для многих файлов, которые будут загружаться, полный путь к каталогу не будет существовать. Например, пока первый файл не создает паб, он не будет существовать, и это также относится к lang/ruby /contrib.
Есть ли метод, который может проверить, существуют ли каталоги и если они не созданы? Я знаю, что существует?, но это похоже на файлы ссылок и не создает полный путь. Я полагаю, мне нужен какой-то рекурсивный метод для перемещения по структуре папок до тех пор, пока он не ударит по имени файла.
ИЗМЕНИТЬ: mkdir_p похоже, именно то, что мне нужно.
Однако, когда я использую путь "/a/b/c", я заметил, что FileUtils.mkdir_p (File.dirname(localdir)) возвращает ошибку: Errno:: EACCES: Permission denied -/a
Если я удаляю "/" спереди вручную, он работает. Чем это вызвано? Какое наилучшее решение для устранения ошибки? следует ли использовать только следующее?
path="/a/b/c"
if path[0]="/"
path=path[1..-1]
end
Однако, я чувствую, что это просто хак.