Estoy tratando de mover un archivo de una partición a otra en una secuencia de comandos Node.js. Cuando utilicé fs.renameSync
recibí Error: EXDEV, Cross-device link
. Copiaba y borraba el original, pero tampoco veo un comando para copiar los archivos. ¿Cómo puede hacerse esto?¿Cómo muevo el archivo a a una partición o dispositivo diferente en Node.js?
Respuesta
Debe copiar y desvincular al mover archivos a través de diferentes particiones. Prueba de esto,
var fs = require('fs');
//var util = require('util');
var is = fs.createReadStream('source_file');
var os = fs.createWriteStream('destination_file');
is.pipe(os);
is.on('end',function() {
fs.unlinkSync('source_file');
});
/* node.js 0.6 and earlier you can use util.pump:
util.pump(is, os, function() {
fs.unlinkSync('source_file');
});
*/
sé que esto ya está contestada, pero me encontré con un problema similar y terminó con algo en la línea de:
require('child_process').spawn('cp', ['-r', source, destination])
Lo que esto hace es llamar al comando cp
("dupdo"). Como estamos saliendo de Node.js, este comando debe ser compatible con su sistema.
Yo sé que no es el más elegante, pero sí lo que necesitaba :)
Uno más solución al problema.
Hay un paquete llamado fs.extra escrito por "coolaj86" en npm.
que lo utilice de esta manera: npm install fs.extra
fs = require ('fs.extra');
fs.move ('foo.txt', 'bar.txt', function (err) {
if (err) { throw err; }
console.log ("Moved 'foo.txt' to 'bar.txt'");
});
He leído el código fuente de esta cosa. Intenta hacer un estándar fs.rename()
y, si falla, copia y elimina el original utilizando el mismo util.pump()
que usa @chandru.
Por cierto, he hablado con coolaj86 en github y sabe que util.pump() está en desuso en el nodo 0.10 y lo arreglará en breve. – erapert
El autor del paquete fs-extra es jprichardson y coolaj86 colabora (ver https://github.com/jprichardson/node-fs-extra para obtener más información). – davidbourguignon
importar el módulo y guardarlo en su archivo package.json
npm install mv --save
luego usarlo de esta manera:
var mv = require('mv');
mv('source_file', 'destination_file', function (err) {
if (err) {
throw err;
}
console.log('file moved successfully');
});
este no es un reemplazo adecuado para fs.renameSync, porque no es síncrono. https://github.com/andrewrk/node-mv/issues/9 – Michael
hice un módulo de Node.js que solo lo hace por ti . No tiene que pensar si se moverá dentro de la misma partición o no. Es la solución más rápida disponible, ya que utiliza la reciente API fs.copyFile()
Node.js para copiar el archivo cuando se mueve a una partición/disco diferente.
Sólo tiene que instalar move-file
:
$ npm install move-file
luego usarlo como esto:
const moveFile = require('move-file');
(async() => {
await moveFile(fromPath, toPath);
console.log('File moved');
})();
- 1. Copie el archivo a un directorio diferente
- 2. ¿Cómo muevo el cursor a una fila y columna específica?
- 3. Activación de objeto COM + en una partición diferente
- 4. Visual Studio mueva el proyecto a una carpeta diferente
- 5. ¿Cómo vincular a un archivo libc diferente?
- 6. ¿Cómo muevo mi trabajo actual a una rama temática?
- 7. ¿Cómo muevo una rama de Git a su propio repositorio?
- 8. Monte la segunda partición en un dispositivo Android con vold
- 9. ¿Cómo muevo un elemento a una lista vacía usando jquery?
- 10. Cómo muevo los elementos hacia arriba o hacia abajo en el archivo de texto
- 11. ¿Cómo cambio el nombre (no muevo) un archivo en JDK7?
- 12. Usar un tema diferente dependiendo de si el dispositivo es una tableta o teléfono Android
- 13. ¿Cómo muevo un repositorio Mercurial privado a un servidor central?
- 14. partición llena, ¿o no?
- 15. cómo obtener una variable de un archivo a otro archivo en Node.js
- 16. java archivo de leer desde el dispositivo a la red
- 17. Cómo llamar a una publicación diferente a un controlador diferente en Rails Functional Test
- 18. Node.js a la comunicación Node.js
- 19. Linux de programación: el dispositivo que un archivo está en
- 20. ¿Cómo obligo a execjs a usar Node.js?
- 21. Comunicación dispositivo a dispositivo en Android
- 22. Cómo reenviar una solicitud a una url diferente en python
- 23. Hive: partición dinámica añadiendo a tabla externa
- 24. Enviar subdominio a node.js
- 25. ¿Cómo encontrar el montaje/partición de un directorio o archivo está activado? (Servidor Linux)
- 26. ¿Cómo muevo un archivo a la Papelera de reciclaje usando PowerShell?
- 27. ¿Cómo muevo el contenido de mi rama principal a una nueva rama de Git?
- 28. iPhone: ¿Cómo arrastro o muevo UIImage/UIButton como se muestra a continuación?
- 29. Cómo muevo una tabla a un grupo de archivos en particular en SQL Server 2008
- 30. Cómo enviar archivos desde un dispositivo Android a otro dispositivo a través de Bluetooth mediante el código
Y, a diferencia de las otras soluciones, se limpia el directorio de origen. –
¿No es esto muy intensivo en recursos? – Thomaschaaf
util.pump está en desuso. use is.pipe (os) y luego escuche el evento 'end' en el flujo de salida. – andrewrk