Ich möchte eine Datei als /a/b/c/d.txt speichern, weiß jedoch nicht, ob eines dieser Verzeichnisse vorhanden ist, und muss sie gegebenenfalls rekursiv erstellen. Wie kann man das in Rubin machen?
101
Verwendung mkdir_p
:
FileUtils.mkdir_p '/a/b/c'
Das _p
ist ein Unix - Überbleibsel für Eltern / Pfad , den Sie auch den Alias verwenden können , mkpath
wenn diese mehr Sinn macht für Sie.
FileUtils.mkpath '/a/b/c'
In Ruby 1.9 wurde FileUtils aus dem Kern entfernt, daher müssen Sie require 'fileutils'
.
FileUtils
undPathname
sind wahrscheinlich die wichtigsten Werkzeuge für Ruby-Shell-Scripting.Verwenden Sie mkdir_p, um ein Verzeichnis rekursiv zu erstellen
quelle
Wenn Sie auf unixy-Computern ausgeführt werden, vergessen Sie nicht, dass Sie einen Shell-Befehl immer unter Ruby ausführen können, indem Sie ihn in Backticks platzieren.
quelle
File.makedirs
quelle
mkdir_p
undmkpath
ruby-doc.org/stdlib-2.6.5/libdoc/fileutils/rdoc/…Pfadname zur Rettung!
quelle
FileUtils.mkdir_p '/a/b/c'
+ gleichzeitig zu erstellend.txt
?Pathname('/a/b/c/d.txt').dirname.mkpath
undFile.write('/a/b/c/d.txt', content)
ohnefilename = '/a/b/c/d.txt'.rpartition('/').last
und den Rest der AnalyseSie können auch Ihre eigene Logik verwenden
Wenn also der Pfad 'tmp / a / b / c' ist, wenn 'tmp' nicht existiert, wird 'tmp' erstellt, dann 'tmp / a /' und so weiter und so fort.
quelle