In Node.js ist das rekursive Kopieren von Ordnern ein häufiger Vorgang. In diesem Artikel erfahren Sie, wie Sie mit Node.js einen gesamten Ordner einschließlich aller darin enthaltenen Unterdateien und Unterordner kopieren.
Es gibt zwei Möglichkeiten, einen Ordner in Node.js zu kopieren. Eine besteht darin, das integrierte fs-Modul zu verwenden, und die andere darin, ein Modul eines Drittanbieters zu verwenden.
Verwenden Sie das integrierte FS-Modul zum Kopieren von Ordnern.
Das integrierte FS-Modul von Node.js bietet mehrere APIs, die uns bei der Implementierung der Ordnerkopierfunktion helfen.
Zuerst müssen wir eine Funktion erstellen, die zwei Parameter erhält: den Pfad zum Quellordner und den Pfad zum Zielordner.
const fs = require('fs'); const path = require('path'); function copyFolderRecursiveSync(source, target) { // ... }
Als nächstes müssen wir den Zielordner erstellen. Wenn der Zielordner nicht existiert, können wir ihn mit der Funktion fs.mkdirSync() erstellen.
if (!fs.existsSync(target)) { fs.mkdirSync(target); }
Als nächstes müssen wir alle Dateien und Unterordner im Quellordner auflisten. Wir können die Funktion fs.readdirSync() verwenden, um die Namen aller Dateien und Unterordner im Quellordner abzurufen.
const files = fs.readdirSync(source);
Für jede Datei oder jeden Unterordner müssen wir prüfen, ob es sich um eine Datei oder einen Ordner handelt. Wir können die Funktion fs.statSync() verwenden, um den Status einer Datei oder eines Ordners abzurufen.
files.forEach((file) => { const sourcePath = path.join(source, file); const targetPath = path.join(target, file); const stat = fs.statSync(sourcePath); if (stat.isFile()) { // copy file } else if (stat.isDirectory()) { // copy directory }
Wenn es sich bei der Datei um eine Datei handelt, können wir sie mit der Funktion fs.copyFileSync() in den Zielordner kopieren.
if (stat.isFile()) { fs.copyFileSync(sourcePath, targetPath); }
Wenn es sich bei der Datei um einen Ordner handelt, müssen wir die Funktion copyFolderRecursiveSync() rekursiv aufrufen und einen neuen Ordner im Zielordner erstellen.
if (stat.isDirectory()) { copyFolderRecursiveSync(sourcePath, targetPath); }
Der vollständige Code lautet wie folgt:
const fs = require('fs'); const path = require('path'); function copyFolderRecursiveSync(source, target) { if (!fs.existsSync(target)) { fs.mkdirSync(target); } const files = fs.readdirSync(source); files.forEach((file) => { const sourcePath = path.join(source, file); const targetPath = path.join(target, file); const stat = fs.statSync(sourcePath); if (stat.isFile()) { fs.copyFileSync(sourcePath, targetPath); } else if (stat.isDirectory()) { copyFolderRecursiveSync(sourcePath, targetPath); } }); } copyFolderRecursiveSync('path/to/sourceFolder', 'path/to/targetFolder');
Verwendung von Modulen von Drittanbietern zum Kopieren von Ordnern
Zusätzlich zur Verwendung des integrierten FS-Moduls können Sie auch Module von Drittanbietern verwenden, um die Funktion zum Kopieren von Ordnern zu implementieren. Hier stellen wir zwei häufig verwendete Module vor: fs-extra und ncp.
fs-extra-Modul
fs-extra ist ein Drittanbietermodul für Node.js, das mehr Funktionen als das integrierte fs-Modul bietet, einschließlich Kopieren, Verschieben und Löschen von Dateien und Ordnern.
Wir können die copySync()-Funktion von fs-extra verwenden, um den gesamten Ordner, einschließlich der darin enthaltenen Unterordner und Dateien, zu kopieren.
const fs = require('fs-extra'); fs.copySync('path/to/sourceFolder', 'path/to/targetFolder');
ncp-Modul
ncp ist ein Drittanbietermodul für Node.js, das auch zum rekursiven Kopieren von Ordnern verwendet werden kann. Im Gegensatz zu fs-extra kann ncp Fehler während der Replikation einfacher behandeln.
Wir können den gesamten Ordner mit der Funktion ncp() von ncp kopieren.
const ncp = require('ncp').ncp; ncp('path/to/sourceFolder', 'path/to/targetFolder', function (err) { if (err) { console.error(err); } else { console.log('done'); } });
Zusammenfassung
Es gibt mehrere Möglichkeiten, Ordner in Node.js rekursiv zu kopieren. Die Verwendung des integrierten fs-Moduls erfordert das Schreiben von mehr Code, aber wir haben mehr Kontrolle über den Kopiervorgang. Das Kopieren von Ordnern ist mit den Drittanbietermodulen fs-extra und ncp einfacher zu erreichen, dies kann jedoch unsere Kontrolle über den Kopiervorgang einschränken.
Das obige ist der detaillierte Inhalt vonSo kopieren Sie Ordner rekursiv in NodeJS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!