La forma más rápida de copiar un archivo en Node.js
El proyecto en el que estoy trabajando (Node.js) implica muchas operaciones con el sistema de archivos (copiar, leer, escribir, etc.).
¿Qué métodos son los más rápidos?
Aceptado
Utilice la forma estándar incorporada fs.copyFile
:
const fs = require('fs');
// File destination.txt will be created or overwritten by default.
fs.copyFile('source.txt', 'destination.txt', (err) => {
if (err) throw err;
console.log('source.txt was copied to destination.txt');
});
Si tiene que admitir versiones antiguas de Node.js al final de su vida útil, así es como lo hace en versiones que no son compatibles fs.copyFile
:
const fs = require('fs');
fs.createReadStream('test.log').pipe(fs.createWriteStream('newLog.log'));
Mismo mecanismo, pero esto agrega manejo de errores:
function copyFile(source, target, cb) {
var cbCalled = false;
var rd = fs.createReadStream(source);
rd.on("error", function(err) {
done(err);
});
var wr = fs.createWriteStream(target);
wr.on("error", function(err) {
done(err);
});
wr.on("close", function(ex) {
done();
});
rd.pipe(wr);
function done(err) {
if (!cbCalled) {
cb(err);
cbCalled = true;
}
}
}
Desde Node.js 8.5.0 tenemos los nuevos métodos fs.copyFile y fs.copyFileSync .
Ejemplo de uso:
var fs = require('fs');
// File "destination.txt" will be created or overwritten by default.
fs.copyFile('source.txt', 'destination.txt', (err) => {
if (err)
throw err;
console.log('source.txt was copied to destination.txt');
});