【保存版】Node.jsでサクッとフォルダ内のファイルをイテレート!ループ処理の達人になるためのガイド
Node.js でフォルダ内のファイルをループする方法
fs.readdirSync() と forEach を使う
これは、最もシンプルで分かりやすい方法です。
const fs = require('fs');
const directoryPath = './path/to/directory';
const files = fs.readdirSync(directoryPath);
files.forEach(fileName => {
console.log(fileName);
});
このコードは、以下の処理を実行します。
fs
モジュールをrequire
する。- ループするフォルダのパスを
directoryPath
変数に格納する。 fs.readdirSync()
を使って、directoryPath
内のファイル名のリストを取得し、files
変数に格納する。forEach
メソッドを使って、files
配列内の各要素に対して処理を実行する。- 各要素に対して、ファイル名をコンソールに出力する。
fs.readdir() と async/await を使う
非同期処理でファイルをループしたい場合は、fs.readdir()
と async/await
を使うことができます。
const fs = require('fs');
const directoryPath = './path/to/directory';
(async () => {
const files = await fs.readdir(directoryPath);
for (const fileName of files) {
console.log(fileName);
}
})();
await
を使って、fs.readdir()
の完了を待つ。
- 上記のコード例では、ファイル名のみを出力していますが、ファイルの統計情報などを取得することもできます。
- 再帰的にサブディレクトリ内のファイルもループしたい場合は、
fs.readdir()
とfs.stat()
を組み合わせて使用する必要があります。
以下の例では、fs.readdir()
と async/await
を使って、フォルダ内のすべてのファイルを別のフォルダにコピーする方法を示します。
const fs = require('fs');
const path = require('path');
const sourceDirectoryPath = './path/to/source/directory';
const destinationDirectoryPath = './path/to/destination/directory';
(async () => {
const files = await fs.readdir(sourceDirectoryPath);
for (const fileName of files) {
const sourceFilePath = path.join(sourceDirectoryPath, fileName);
const destinationFilePath = path.join(destinationDirectoryPath, fileName);
await fs.copyFile(sourceFilePath, destinationFilePath);
console.log(`${fileName} をコピーしました。`);
}
})();
- ソースフォルダとターゲットフォルダのパスをそれぞれ
sourceDirectoryPath
とdestinationDirectoryPath
変数に格納する。 - 各要素に対して、ファイルをソースフォルダからターゲットフォルダにコピーする。
const fs = require('fs');
const directoryPath = './path/to/directory';
const files = fs.readdirSync(directoryPath);
files.forEach(fileName => {
console.log(fileName);
});
const fs = require('fs');
const directoryPath = './path/to/directory';
(async () => {
const files = await fs.readdir(directoryPath);
for (const fileName of files) {
console.log(fileName);
}
})();
const fs = require('fs');
const path = require('path');
const sourceDirectoryPath = './path/to/source/directory';
const destinationDirectoryPath = './path/to/destination/directory';
(async () => {
const files = await fs.readdir(sourceDirectoryPath);
for (const fileName of files) {
const sourceFilePath = path.join(sourceDirectoryPath, fileName);
const destinationFilePath = path.join(destinationDirectoryPath, fileName);
await fs.copyFile(sourceFilePath, destinationFilePath);
console.log(`${fileName} をコピーしました。`);
}
})();
説明
-
コードを実行する前に、
fs
とpath
モジュールをインストールする必要があります。npm install fs path
- 上記のコードはあくまで基本的な例です。
- 実際の状況に合わせて、コードを自由にカスタマイズすることができます。
- 例えば、ファイルの内容を読み込んだり、ファイルを変更したりすることもできます。
glob
モジュールは、ファイルパターンの検索に使用できるモジュールです。このモジュールを使用して、特定のパターンのファイルのみをループすることができます。
const glob = require('glob');
const directoryPath = './path/to/directory';
const pattern = '*.txt'; // テキストファイルのみをループ
glob(pattern, { cwd: directoryPath }, (err, files) => {
if (err) {
console.error(err);
return;
}
files.forEach(fileName => {
console.log(fileName);
});
});
recursive-fs モジュールを使う
recursive-fs
モジュールは、再帰的にディレクトリ内のすべてのファイルをループするのに役立つモジュールです。サブディレクトリ内のファイルもループする必要がある場合に便利です。
const fs = require('fs');
const recursiveFs = require('recursive-fs');
const directoryPath = './path/to/directory';
recursiveFs.readdirSync(directoryPath).forEach(fileName => {
console.log(fileName);
});
walk モジュールを使う
walk
モジュールは、ジェネレータを使用してディレクトリ内のすべてのファイルをループするのに役立つモジュールです。非同期処理でファイルをループしたい場合に便利です。
const walk = require('walk');
const directoryPath = './path/to/directory';
walk(directoryPath, (err, dir, files) => {
if (err) {
console.error(err);
return;
}
files.forEach(fileName => {
console.log(fileName);
});
});
stream を使う
fs.readdir()
メソッドは、ファイル名のリストを返しますが、fs.createReadStream()
メソッドを使用して、ファイルの内容をストリームとして取得することもできます。
const fs = require('fs');
const directoryPath = './path/to/directory';
const stream = fs.createReadStream(directoryPath);
stream.on('data', (chunk) => {
console.log(chunk.toString());
});
stream.on('end', () => {
console.log('すべてのファイルを読み込みました。');
});
注意点
上記で紹介した方法はほんの一例です。状況に応じて、最適な方法を選択してください。
また、ファイルシステムを操作する際は、常に注意が必要です。誤ってファイルを削除したり、変更したりしないように注意してください。
javascript arrays node.js