623 Stimmen

Der schnellste Weg, eine Datei in Node.js zu kopieren

Das Projekt, an dem ich arbeite (Node.js) impliziert viele Operationen mit dem Dateisystem (Kopieren, Lesen, Schreiben, etc.).

Welche Methoden sind die schnellsten?

45voto

Tester Punkte 827

Nun, normalerweise ist es gut, asynchrone Dateioperationen zu vermeiden. Hier ist das kurze (d.h. ohne Fehlerbehandlung) Sync-Beispiel:

var fs = require('fs');
fs.writeFileSync(targetFile, fs.readFileSync(sourceFile));

19voto

Andrew Childs Punkte 2826

Wenn Sie sich nicht darum kümmern, dass es asynchron ist, und keine gigabytegroßen Dateien kopieren, und lieber keine weitere Abhängigkeit für eine einzige Funktion hinzufügen möchten:

function copySync(src, dest) {
  var data = fs.readFileSync(src);
  fs.writeFileSync(dest, data);
}

18voto

Jens Hauke Punkte 199

Mike Schillings Lösung für die Fehlerbehandlung mit einem Shortcut für den Error Event Handler.

function copyFile(source, target, cb) {
  var cbCalled = false;

  var rd = fs.createReadStream(source);
  rd.on("error", done);

  var wr = fs.createWriteStream(target);
  wr.on("error", done);
  wr.on("close", function(ex) {
    done();
  });
  rd.pipe(wr);

  function done(err) {
    if (!cbCalled) {
      cb(err);
      cbCalled = true;
    }
  }
}

13voto

Tamas Szoke Punkte 5208

Möglicherweise möchten Sie async/await verwenden, da node v10.0.0 ist es möglich mit dem eingebauten fs Promises API .

Exemple :

const fs = require('fs')

const copyFile = async (src, dest) => {
  await fs.promises.copyFile(src, dest)
}

Anmerkung:

Ab dem node v11.14.0, v10.17.0 die API ist nicht mehr experimentell.

Weitere Informationen:

Versprechen API

Versprechen copyFile

7voto

AYO O. Punkte 99
   const fs = require("fs");
   fs.copyFileSync("filepath1", "filepath2"); //fs.copyFileSync("file1.txt", "file2.txt");

Dies ist, was ich persönlich verwenden, um eine Datei zu kopieren und ersetzen eine andere Datei mit Node.js :)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X