我收到以下错误:
"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
但是,对于我将下载的许多文件,完整的目录路径将不存在。例如,在第一个文件创建 pub 之前,它不会存在,这也适用于 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
但是,我觉得这只是一个黑客。