229 votes

Comment déplacer des fichiers dans node.js ?

Comment puis-je déplacer des fichiers (comme la commande shell 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 ?

230voto

rizidoro Points 1993

Selon le commentaire de seppo0010, j'ai utilisé la fonction renommer pour le faire.

http://nodejs.org/docs/latest/api/fs.html#fs_fs_rename_oldpath_newpath_callback

fs.rename(oldPath, newPath, callback)

Ajouté dans : v0.0.2

oldPath <String> | <Buffer>
newPath <String> | <Buffer>
callback <Function>

Renommer de manière asynchrone(2). Aucun argument autre qu'une éventuelle exception sont donnés au callback d'achèvement.

6 votes

Pour ceux qui se demandent où est passé le commentaire de @seppo0010 : il était sur ma réponse, que j'ai supprimée et postée en tant que commentaire sur l'OP.

10 votes

Cela ne fonctionnera pas si vous croisez des partitions ou si vous utilisez un système de fichiers virtuel ne supportant pas le déplacement de fichiers. Vous devez utiliser cette solution avec une copie de secours

31voto

superjoe30 Points 6876

Utilisez le mv qui va d'abord essayer de faire un fs.rename et ensuite revenir à la copie et ensuite au déliage.

0 votes

Cela a bien fonctionné pour les besoins simples de déplacement d'un fichier.

2 votes

Andrewrk semble être l'auteur de ceci mv module de nœud. J'aime utiliser npm pour installer ; npm install mv --save-dev ; voici le lien npm

9 votes

En quoi est-ce une dépendance du développement ? L'application ne nécessite-t-elle pas mv pour fonctionner ?

19voto

deadrunk Points 3902

util.pump est déprécié dans le nœud 0.10 et génère un message d'avertissement

 util.pump() is deprecated. Use readableStream.pipe() instead

La solution pour copier des fichiers en utilisant des flux est donc la suivante :

var source = fs.createReadStream('/path/to/source');
var dest = fs.createWriteStream('/path/to/dest');

source.pipe(dest);
source.on('end', function() { /* copied */ });
source.on('error', function(err) { /* error */ });

3 votes

C'est la bonne façon de copier/déplacer un fichier qui se trouve sur deux partitions différentes. Merci !

5voto

alessioalex Points 27001

Voici un exemple utilisant util.pump, tiré de >> Comment déplacer un fichier a vers une partition ou un périphérique différent dans Node.js ?

var fs = require('fs'),
    util = require('util');

var is = fs.createReadStream('source_file')
var os = fs.createWriteStream('destination_file');

util.pump(is, os, function() {
    fs.unlinkSync('source_file');
});

21 votes

Il convient de noter que vous ne devez effectuer cette opération que lorsque vous déplacez des fichiers sur plusieurs volumes. Sinon, vous pouvez simplement utiliser fs.rename() (dans un volume, renommer un fichier et le déplacer sont la même chose).

0 votes

Est-il possible de déplacer un fichier de la machine locale vers le serveur ?

-1voto

William Points 1

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X