javascript - readstream - ¿Cómo muevo el archivo a a una partición o dispositivo diferente en Node.js?
readfilesync javascript (5)
Debe copiar y desvincular al mover archivos a través de diferentes particiones. Prueba 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'');
});
*/
Estoy tratando de mover un archivo de una partición a otra en un script Node.js. Cuando usé fs.renameSync
recibí un Error: EXDEV, Cross-device link
. Lo copiaría y eliminaría el original, pero tampoco veo un comando para copiar archivos. ¿Cómo puede hacerse esto?
Hice un módulo Node.js que solo lo maneja 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 fs.copyFile()
Node.js para copiar el archivo cuando se mueve a una partición / disco diferente.
Simplemente instala move-file
:
$ npm install move-file
Entonces úsalo así:
const moveFile = require(''move-file'');
(async () => {
await moveFile(fromPath, toPath);
console.log(''File moved'');
})();
Sé que esto ya está respondido, pero encontré un problema similar y terminé con algo como:
require(''child_process'').spawn(''cp'', [''-r'', source, destination])
Lo que esto hace es llamar al comando cp
("copiar"). Dado que estamos saliendo de Node.js, este comando debe ser compatible con su sistema.
Sé que no es el más elegante, pero hizo lo que necesitaba :)
Una solución más al problema.
Hay un paquete llamado fs.extra escrito por "coolaj86" en npm.
Usted lo usa así: 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.
para importar el módulo y guardarlo en su archivo package.json
npm install mv --save
luego úsalo así:
var mv = require(''mv'');
mv(''source_file'', ''destination_file'', function (err) {
if (err) {
throw err;
}
console.log(''file moved successfully'');
});