Quero armazenar um arquivo como /a/b/c/d.txt, mas não sei se algum desses diretórios existe e preciso criá-los recursivamente, se necessário. Como fazer isso em rubi?
101
Use mkdir_p
:
FileUtils.mkdir_p '/a/b/c'
O _p
é um resquício do Unix para pai / caminho, você também pode usar o alias mkpath
se isso fizer mais sentido para você.
FileUtils.mkpath '/a/b/c'
No Ruby 1.9, o FileUtils foi removido do núcleo, então você terá que fazer isso require 'fileutils'
.
FileUtils
ePathname
são provavelmente as ferramentas mais importantes para scripts de shell Ruby.Use mkdir_p para criar diretório recursivamente
fonte
Se você estiver executando em máquinas unixy, não se esqueça que você sempre pode executar um comando shell no ruby, colocando-o em crases.
fonte
File.makedirs
fonte
mkdir_p
emkpath
ruby-doc.org/stdlib-2.6.5/libdoc/fileutils/rdoc/...Pathname para o resgate!
fonte
FileUtils.mkdir_p '/a/b/c'
+ criard.txt
ao mesmo tempo?Pathname('/a/b/c/d.txt').dirname.mkpath
eFile.write('/a/b/c/d.txt', content)
semfilename = '/a/b/c/d.txt'.rpartition('/').last
e o resto da análiseVocê também pode usar sua própria lógica
Portanto, se o caminho for 'tmp / a / b / c' se 'tmp' não existir, 'tmp' será criado, então 'tmp / a /' e assim por diante.
fonte