Node.jsでディレクトリを再帰的に走査してすべてのファイルを取得する方法


  1. fsモジュールを使用する方法:

    const fs = require('fs');
    const path = require('path');
    function getFilesRecursively(directory) {
    const files = [];
    fs.readdirSync(directory).forEach((file) => {
    const filePath = path.join(directory, file);
    const stat = fs.statSync(filePath);
    if (stat.isFile()) {
      files.push(filePath);
    } else if (stat.isDirectory()) {
      files.push(...getFilesRecursively(filePath));
    }
    });
    return files;
    }
    // 使用例:
    const directoryPath = '/path/to/directory';
    const allFiles = getFilesRecursively(directoryPath);
    console.log(allFiles);
  2. ファイルシステムを再帰的に走査する外部ライブラリを使用する方法:

例えば、globreaddirpといった外部のライブラリを使用することもできます。これらのライブラリはディレクトリを再帰的に走査し、指定された条件に合致するファイルを取得する機能を提供します。

  • globの使用例:

    const glob = require('glob');
    // 使用例:
    const directoryPath = '/path/to/directory';
    const pattern = '/*'; // すべてのファイルを取得する場合
    glob(pattern, { cwd: directoryPath }, (err, files) => {
    if (err) {
    console.error(err);
    } else {
    console.log(files);
    }
    });
  • readdirpの使用例:

    const readdirp = require('readdirp');
    // 使用例:
    const directoryPath = '/path/to/directory';
    readdirp(directoryPath, { fileFilter: '*.txt' }) // 条件を指定する場合
    .on('data', (entry) => {
    console.log(entry.fullPath);
    })
    .on('error', (err) => {
    console.error(err);
    });

これらの方法を使用すると、Node.jsでディレクトリを再帰的に走査してすべてのファイルを取得することができます。適切な方法を選択し、自分のプロジェクトに適用してください。