Heim Web-Frontend Front-End-Fragen und Antworten So kopieren Sie Ordner rekursiv in NodeJS

So kopieren Sie Ordner rekursiv in NodeJS

May 14, 2023 am 09:03 AM

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) {
  // ...
}
Nach dem Login kopieren

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);
}
Nach dem Login kopieren

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);
Nach dem Login kopieren

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
  }
Nach dem Login kopieren

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);
}
Nach dem Login kopieren

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);
}
Nach dem Login kopieren

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');
Nach dem Login kopieren

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');
Nach dem Login kopieren

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');
  }
});
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was ist Useffizität? Wie verwenden Sie es, um Nebenwirkungen auszuführen? Was ist Useffizität? Wie verwenden Sie es, um Nebenwirkungen auszuführen? Mar 19, 2025 pm 03:58 PM

In dem Artikel wird die Verwendung von UseEffect in React, einen Haken für die Verwaltung von Nebenwirkungen wie Datenabrufen und DOM -Manipulation in funktionellen Komponenten erläutert. Es erklärt die Verwendung, gemeinsame Nebenwirkungen und Reinigung, um Probleme wie Speicherlecks zu verhindern.

Wie verbinden Sie React -Komponenten mit Connect () an den Redux -Store? Wie verbinden Sie React -Komponenten mit Connect () an den Redux -Store? Mar 21, 2025 pm 06:23 PM

In Artikel werden die Verbindungskomponenten an Redux Store mit Connect () verbinden, wobei MapStatetoprops, MapDispatchtoprops und Leistungsauswirkungen erläutert werden.

Was ist usecontext? Wie verwenden Sie es, um den Zustand zwischen Komponenten zu teilen? Was ist usecontext? Wie verwenden Sie es, um den Zustand zwischen Komponenten zu teilen? Mar 19, 2025 pm 03:59 PM

Der Artikel erläutert den Usecontext in React, was das staatliche Management durch Vermeidung von Prop -Bohrungen vereinfacht. Es wird von Vorteilen wie zentraler Staat und Leistungsverbesserungen durch reduzierte Neulehre erörtert.

Wie verhindern Sie das Standardverhalten bei Ereignishandlern? Wie verhindern Sie das Standardverhalten bei Ereignishandlern? Mar 19, 2025 pm 04:10 PM

In Artikeln werden das Standardverhalten bei Ereignishandlern mithilfe von PURDDEFAULT () -Methoden, seinen Vorteilen wie verbesserten Benutzererfahrungen und potenziellen Problemen wie Barrierefreiheitsproblemen verhindern.

Was sind die Vor- und Nachteile kontrollierter und unkontrollierter Komponenten? Was sind die Vor- und Nachteile kontrollierter und unkontrollierter Komponenten? Mar 19, 2025 pm 04:16 PM

Der Artikel erörtert die Vor- und Nachteile kontrollierter und unkontrollierter Komponenten bei React, wobei sich auf Aspekte wie Vorhersehbarkeit, Leistung und Anwendungsfälle konzentriert. Es rät zu Faktoren, die bei der Auswahl zwischen ihnen berücksichtigt werden müssen.

Reacts Rolle bei HTML: Verbesserung der Benutzererfahrung Reacts Rolle bei HTML: Verbesserung der Benutzererfahrung Apr 09, 2025 am 12:11 AM

React kombiniert JSX und HTML, um die Benutzererfahrung zu verbessern. 1) JSX bettet HTML ein, um die Entwicklung intuitiver zu gestalten. 2) Der virtuelle DOM -Mechanismus optimiert die Leistung und reduziert den DOM -Betrieb. 3) Komponentenbasierte Verwaltungs-Benutzeroberfläche zur Verbesserung der Wartbarkeit. 4) Staatsmanagement und Ereignisverarbeitung verbessern die Interaktivität.

Was sind die Einschränkungen des Reaktivitätssystems von Vue 2 in Bezug auf Array- und Objektänderungen? Was sind die Einschränkungen des Reaktivitätssystems von Vue 2 in Bezug auf Array- und Objektänderungen? Mar 25, 2025 pm 02:07 PM

Das Reaktivitätssystem von VUE 2 kämpft mit der Einstellung der Direktarray -Index, der Längenänderung und der Addition/Löschung der Objekteigenschaften. Entwickler können die Mutationsmethoden von VUE und VUE.SET () verwenden, um die Reaktivität sicherzustellen.

Wie definieren Sie Routen mit der & lt; Route & gt; Komponente? Wie definieren Sie Routen mit der & lt; Route & gt; Komponente? Mar 21, 2025 am 11:47 AM

In dem Artikel wird das Definieren von Routen im React -Router unter Verwendung der & lt; Route & gt; Komponente, Abdeckung von Requisiten wie Pfad, Komponente, Rendern, Kindern, exakt und verschachteltes Routing.

See all articles