Wie kann ich Dateien (wie die mv-Befehlsshell) auf node.js verschieben? Gibt es dafür eine Methode oder sollte ich eine Datei lesen, in eine neue Datei schreiben und ältere Dateien entfernen?
151
Laut seppo0010-Kommentar habe ich dazu die Umbenennungsfunktion verwendet.
http://nodejs.org/docs/latest/api/fs.html#fs_fs_rename_oldpath_newpath_callback
fs.rename (oldPath, newPath, Rückruf)
Hinzugefügt in: v0.0.2
oldPath <String> | <Buffer> newPath <String> | <Buffer> callback <Function>
Asynchrone Umbenennung (2). Für den Abschlussrückruf werden keine anderen Argumente als eine mögliche Ausnahme angegeben.
Dieses Beispiel stammt aus: Node.js in Aktion
quelle
Nodejs nativ verwenden
(HINWEIS: "Dies funktioniert nicht, wenn Sie Partitionen kreuzen oder ein virtuelles Dateisystem verwenden, das das Verschieben von Dateien nicht unterstützt. [...]" - Flavien Volken 2. September 15 um 12:50 ")
quelle
Verwenden Sie das MV- Knotenmodul, das zuerst versucht, ein
fs.rename
Kopieren durchzuführen und dann die Verknüpfung aufzuheben.quelle
mv
Knotenmoduls zu sein. Ich verwende gerne npm zur Installation.npm install mv --save-dev
;; Hier ist der npm Linkutil.pump
ist in Knoten 0.10 veraltet und generiert eine WarnmeldungDie Lösung zum Kopieren von Dateien mithilfe von Streams lautet also:
quelle
Verwenden der Umbenennungsfunktion:
wo
Angenommen, Sie möchten den Dateinamen unverändert lassen.
quelle
Das
fs-extra
Modul ermöglicht es Ihnen, dies mit seinermove()
Methode zu tun . Ich habe es bereits implementiert und es funktioniert gut, wenn Sie eine Datei vollständig von einem Verzeichnis in ein anderes verschieben möchten - dh. Entfernen der Datei aus dem Quellverzeichnis. Sollte für die meisten grundlegenden Fälle funktionieren.quelle
Hier ist ein Beispiel mit util.pump von >> Wie verschiebe ich Datei a auf eine andere Partition oder ein anderes Gerät in Node.js?
quelle
fs.rename()
(innerhalb eines Volumes ist das Umbenennen und Verschieben einer Datei dasselbe).Verwenden von Versprechungen für Knotenversionen größer als 8.0.0:
quelle
fs.rename
funktioniert nicht, wenn Sie sich in einer Docker-Umgebung mit Volumes befinden.async
dermoveThem
Funktion eine Deklaration hinzu .Nur meine 2 Cent, wie in der obigen Antwort angegeben : Die copy () -Methode sollte nicht unverändert zum Kopieren von Dateien ohne geringfügige Anpassung verwendet werden:
Die Kopierfunktion in einem Versprechen:
Beachten Sie jedoch, dass das Dateisystem möglicherweise abstürzt, wenn der Zielordner nicht vorhanden ist.
quelle
Ich würde alle beteiligten Funktionen trennen (dh
rename
,copy
,unlink
) voneinander Flexibilität und promisify alles zu gewinnen, natürlich:moveFile
ist nur eine Komfortfunktion, und wir können die Funktionen separat anwenden, wenn wir beispielsweise eine feinkörnigere Ausnahmebehandlung benötigen.quelle
Shelljs ist eine sehr praktische Lösung.
Befehl: mv ([Optionen,] Quelle, Ziel)
Verfügbare Optionen:
-f: force (Standardverhalten)
-n: um ein Überschreiben zu verhindern
quelle
Dies ist eine Wiederholung der Antwort von Teoman Shipahi mit einem etwas weniger mehrdeutigen Namen und folgt dem Entwurfsprinzip, Code zu definieren, bevor Sie versuchen, ihn aufzurufen. (Während der Knoten es Ihnen erlaubt, etwas anderes zu tun, ist es keine gute Praxis, den Wagen vor das Pferd zu stellen.)
quelle
Mithilfe der folgenden URL können Sie Ihre Datei CURRENT Source entweder kopieren oder in die Zielquelle verschieben
quelle
Wenn Sie versuchen, eine Quelldatei von node.js zu verschieben oder umzubenennen, versuchen Sie dies https://github.com/viruschidai/node-mv . Die Verweise auf diese Datei werden in allen anderen Dateien aktualisiert.
quelle
Du kannst den ... benutzen
move-file
npm-Paket verwenden:Installieren Sie zuerst das Paket:
Verwendung:
quelle