Node.js では、フォルダーを再帰的にコピーするのが一般的な操作です。この記事では、Node.js を使用して、フォルダー内のすべてのサブファイルとサブフォルダーを含むフォルダー全体をコピーする方法について説明します。
Node.js でフォルダーをコピーするには、主に 2 つの方法があります。 1 つは組み込みの fs モジュールを使用する方法、もう 1 つはサードパーティのモジュールを使用する方法です。
フォルダー コピーに組み込みの fs モジュールを使用する
Node.js の組み込みの fs モジュールは、フォルダー コピー機能の実装に役立ついくつかの API を提供します。
まず、ソース フォルダーへのパスと宛先フォルダーへのパスという 2 つのパラメーターを受け取る関数を作成する必要があります。
const fs = require('fs'); const path = require('path'); function copyFolderRecursiveSync(source, target) { // ... }
次に、ターゲット フォルダーを作成する必要があります。ターゲットフォルダーが存在しない場合は、fs.mkdirSync() 関数を使用して作成できます。
if (!fs.existsSync(target)) { fs.mkdirSync(target); }
次に、ソース フォルダー内のすべてのファイルとサブフォルダーを一覧表示する必要があります。 fs.readdirSync() 関数を使用して、ソース フォルダー内のすべてのファイルとサブフォルダーの名前を取得できます。
const files = fs.readdirSync(source);
各ファイルまたはサブフォルダーについて、それがファイルであるかフォルダーであるかを確認する必要があります。 fs.statSync() 関数を使用して、ファイルまたはフォルダーのステータスを取得できます。
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 }
ファイルがファイルの場合は、fs.copyFileSync() 関数を使用して、それをターゲット フォルダーにコピーできます。
if (stat.isFile()) { fs.copyFileSync(sourcePath, targetPath); }
ファイルがフォルダーの場合は、copyFolderRecursiveSync() 関数を再帰的に呼び出して、ターゲット フォルダーに新しいフォルダーを作成する必要があります。
if (stat.isDirectory()) { copyFolderRecursiveSync(sourcePath, targetPath); }
完全なコードは次のとおりです:
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');
フォルダー コピーにサードパーティ モジュールを使用する
組み込みの fs モジュールを使用することに加えて、次のこともできます。フォルダーのコピー機能を実装するためのサードパーティ モジュール。ここでは、一般的に使用される 2 つのモジュール、fs-extra と ncp を紹介します。
fs-extra モジュール
fs-extra は、ファイルやフォルダーのコピーと移動、削除など、組み込みの fs モジュールよりも多くの機能を提供する Node.js 用のサードパーティ モジュールです。 。
fs-extra の copySync() 関数を使用して、サブフォルダーとその中のファイルを含むフォルダー全体をコピーできます。
const fs = require('fs-extra'); fs.copySync('path/to/sourceFolder', 'path/to/targetFolder');
ncp module
ncp は、フォルダーを再帰的にコピーするために使用できる Node.js のサードパーティ モジュールです。 fs-extra とは異なり、ncp はレプリケーション中のエラーをより簡単に処理できます。
ncp の ncp() 関数を使用して、フォルダー全体をコピーできます。
const ncp = require('ncp').ncp; ncp('path/to/sourceFolder', 'path/to/targetFolder', function (err) { if (err) { console.error(err); } else { console.log('done'); } });
概要
Node.js でフォルダーを再帰的にコピーするには、複数の方法があります。組み込みの fs モジュールを使用するには、より多くのコードを記述する必要がありますが、コピー プロセスをより詳細に制御できます。フォルダーのコピーは、サードパーティ モジュールの fs-extra および ncp を使用すると簡単に実現できますが、これによりコピー プロセスの制御が低下する可能性があります。
以上がNodejsでフォルダーを再帰的にコピーする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。