【保存版】Node.jsでサクッとフォルダ内のファイルをイテレート!ループ処理の達人になるためのガイド

2024-07-27

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);
});

このコードは、以下の処理を実行します。

  1. fs モジュールを require する。
  2. ループするフォルダのパスを directoryPath 変数に格納する。
  3. fs.readdirSync() を使って、directoryPath 内のファイル名のリストを取得し、files 変数に格納する。
  4. forEach メソッドを使って、files 配列内の各要素に対して処理を実行する。
  5. 各要素に対して、ファイル名をコンソールに出力する。

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);
  }
})();
  1. 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} をコピーしました。`);
  }
})();
  1. ソースフォルダとターゲットフォルダのパスをそれぞれ sourceDirectoryPathdestinationDirectoryPath 変数に格納する。
  2. 各要素に対して、ファイルをソースフォルダからターゲットフォルダにコピーする。



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} をコピーしました。`);
  }
})();

説明

  • コードを実行する前に、fspath モジュールをインストールする必要があります。

    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



Prototype を使用してテキストエリアを自動サイズ変更するサンプルコード

以下のものが必要です。テキストエリアを含む HTML ファイルHTML ファイルに Prototype ライブラリをインクルードします。テキストエリアに id 属性を設定します。以下の JavaScript コードを追加します。このコードは、以下の処理を行います。...


JavaScriptにおける数値検証 - IsNumeric()関数の代替方法

JavaScriptでは、入力された値が数値であるかどうかを検証する際に、isNaN()関数やNumber. isInteger()関数などを利用することが一般的です。しかし、これらの関数では小数点を含む数値を適切に検出できない場合があります。そこで、小数点を含む数値も正しく検証するために、IsNumeric()関数を実装することが有効です。...


jQueryによるHTML文字列のエスケープ: より詳細な解説とコード例

JavaScriptやjQueryでHTMLページに動的にコンテンツを追加する際、HTMLの特殊文字(<, >, &, など)をそのまま使用すると、意図しないHTML要素が生成される可能性があります。これを防ぐために、HTML文字列をエスケープする必要があります。...


JavaScriptフレームワーク:React vs Vue.js

JavaScriptは、Webページに動的な機能を追加するために使用されるプログラミング言語です。一方、jQueryはJavaScriptライブラリであり、JavaScriptでよく行う操作を簡略化するためのツールを提供します。jQueryを学ぶ場所...


JavaScriptにおける未定義オブジェクトプロパティ検出のコード例解説

JavaScriptでは、オブジェクトのプロパティが定義されていない場合、そのプロパティへのアクセスはundefinedを返します。この現象を検出して適切な処理を行うことが重要です。最も単純な方法は、プロパティの値を直接undefinedと比較することです。...



SQL SQL SQL SQL Amazon で見る



JavaScript、HTML、CSSでWebフォントを検出する方法

CSS font-family プロパティを使用するCSS font-family プロパティは、要素に適用されるフォントファミリーを指定するために使用されます。このプロパティを使用して、Webページで使用されているフォントのリストを取得できます。


JavaScript、HTML、およびポップアップを使用したブラウザのポップアップブロック検出方法

window. open 関数は、新しいウィンドウまたはタブを開きます。ブラウザがポップアップをブロックしている場合、この関数はエラーを生成します。このエラーを処理して、ポップアップがブロックされているかどうかを判断できます。window


JavaScriptを使用してHTML要素の背景色をCSSプロパティで設定する方法

このチュートリアルでは、JavaScriptを使用してHTML要素の背景色をCSSプロパティで設定する方法について説明します。方法HTML要素の背景色を設定するには、以下の3つの方法があります。style属性HTML要素のstyle属性を使用して、直接CSSプロパティを指定できます。


JavaScript オブジェクトの長さを取得する代替的な方法

JavaScriptにおけるオブジェクトは、プロパティとメソッドを持つデータ構造です。プロパティはデータの値を保持し、メソッドはオブジェクトに対して実行できる関数です。JavaScriptの標準的なオブジェクトには、一般的に「長さ」という概念はありません。これは、配列のようなインデックスベースのデータ構造ではないためです。


JavaScriptグラフ可視化ライブラリのコード例解説

JavaScriptは、ウェブブラウザ上で動作するプログラミング言語です。その中で、グラフの可視化を行うためのライブラリが数多く存在します。これらのライブラリは、データ構造やアルゴリズムを視覚的に表現することで、理解を深める助けとなります。