次のエラーが発生します。
"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
しかし、これは単なるハックのように感じます。