Comment puis-je déplacer des fichiers (comme le shell de commande mv) sur node.js? Existe-t-il une méthode pour cela ou dois-je lire un fichier, écrire dans un nouveau fichier et supprimer l'ancien fichier?
151
Selon le commentaire seppo0010, j'ai utilisé la fonction de changement de nom pour ce faire.
http://nodejs.org/docs/latest/api/fs.html#fs_fs_rename_oldpath_newpath_callback
fs.rename (oldPath, newPath, rappel)
Ajouté dans: v0.0.2
oldPath <String> | <Buffer> newPath <String> | <Buffer> callback <Function>
Renommer asynchrone (2). Aucun argument autre qu'une exception possible n'est donné au rappel d'achèvement.
Cet exemple tiré de: Node.js en action
la source
Utilisation native de nodejs
(REMARQUE: "Cela ne fonctionnera pas si vous traversez des partitions ou si vous utilisez un système de fichiers virtuel ne prenant pas en charge le déplacement des fichiers. [...]" - Flavien Volken 2 septembre 15 à 12:50 ")
la source
Utilisez le module de nœud mv qui essaiera d'abord de faire un
fs.rename
, puis de revenir à la copie puis à la dissociation.la source
mv
module de nœud. J'aime utiliser npm pour installer;npm install mv --save-dev
; voici le lien npmutil.pump
est obsolète dans le nœud 0.10 et génère un message d'avertissementLa solution pour copier des fichiers à l'aide de flux est donc:
la source
Utilisation de la fonction renommer:
où
en supposant que vous souhaitez conserver le nom de fichier inchangé.
la source
Le
fs-extra
module vous permet de faire cela avec samove()
méthode. Je l'ai déjà implémenté et cela fonctionne bien si vous souhaitez déplacer complètement un fichier d'un répertoire à un autre - ie. suppression du fichier du répertoire source. Devrait fonctionner pour la plupart des cas basiques.la source
Voici un exemple utilisant util.pump, à partir de >> Comment déplacer le fichier a vers une partition ou un périphérique différent dans Node.js?
la source
fs.rename()
(dans un volume renommer un fichier et le déplacer, c'est la même chose).Utilisation des promesses pour les versions de Node supérieures à 8.0.0:
la source
fs.rename
ne fonctionne pas si vous êtes dans un environnement Docker avec des volumes.async
déclaration à lamoveThem
fonction.Juste mes 2 cents comme indiqué dans la réponse ci - dessus : La méthode copy () ne doit pas être utilisée telle quelle pour copier des fichiers sans un léger ajustement:
La fonction de copie enveloppée dans une promesse:
Cependant, gardez à l'esprit que le système de fichiers peut se bloquer si le dossier cible n'existe pas.
la source
Je séparerais toutes les fonctions concernées (c. -à
rename
,copy
,unlink
) de l'autre pour gagner en flexibilité et tout promisify, bien sûr:moveFile
est juste une fonction pratique et nous pouvons appliquer les fonctions séparément, lorsque, par exemple, nous avons besoin d'une gestion des exceptions plus fine.la source
Shelljs est une solution très pratique.
commande: mv ([options,] source, destination)
Options disponibles:
-f: force (comportement par défaut)
-n: pour éviter l'écrasement
la source
il s'agit d'une répétition de la réponse de teoman shipahi avec un nom légèrement moins ambigu et suivant le principe de conception consistant à définir le code avant d'essayer de l'appeler. (Bien que node vous permette de faire autrement, ce n'est pas une bonne pratique de mettre la charrue avant les boeufs.)
la source
À l'aide de l'URL ci-dessous, vous pouvez copier ou déplacer votre fichier Source ACTUELLE vers la source de destination
la source
Si vous essayez de déplacer ou de renommer un fichier source node.js, essayez ceci https://github.com/viruschidai/node-mv . Il mettra à jour les références à ce fichier dans tous les autres fichiers.
la source
Vous pouvez utiliser le
move-file
package npm:Installez d'abord le package:
Usage:
la source