Quiero almacenar un archivo como /a/b/c/d.txt, pero no sé si existe alguno de estos directorios y necesito crearlos de forma recursiva si es necesario. ¿Cómo se puede hacer esto en rubí?
101
Utilizar mkdir_p
:
FileUtils.mkdir_p '/a/b/c'
El _p
es un vestigio de UNIX para los padres / ruta también se puede utilizar el alias mkpath
si eso tiene más sentido para usted.
FileUtils.mkpath '/a/b/c'
En Ruby 1.9 FileUtils se eliminó del núcleo, por lo que tendrá que hacerlo require 'fileutils'
.
FileUtils
yPathname
son probablemente las herramientas más importantes para la creación de scripts de shell Ruby.Utilice mkdir_p para crear directorio de forma recursiva
fuente
Si está ejecutando en máquinas Unixy, no olvide que siempre puede ejecutar un comando de shell bajo ruby colocándolo entre comillas invertidas.
fuente
File.makedirs
fuente
mkdir_p
ymkpath
ruby-doc.org/stdlib-2.6.5/libdoc/fileutils/rdoc/…Pathname al rescate!
fuente
FileUtils.mkdir_p '/a/b/c'
+ creard.txt
al mismo tiempo?Pathname('/a/b/c/d.txt').dirname.mkpath
yFile.write('/a/b/c/d.txt', content)
sinfilename = '/a/b/c/d.txt'.rpartition('/').last
y el resto del análisisTambién puedes usar tu propia lógica
Entonces, si la ruta es 'tmp / a / b / c' si 'tmp' no existe, se crea 'tmp', entonces 'tmp / a /' y así sucesivamente.
fuente