「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > ファイル システム: Node.js `fs` モジュール

ファイル システム: Node.js `fs` モジュール

2024 年 8 月 29 日に公開
ブラウズ:702

File System: Node.js `fs` Module

Node.js の fs (ファイル システム) モジュールは、ファイル システムを操作するための強力なツールであり、サーバー上のファイルやディレクトリと対話できるようになります。これは Node.js に組み込まれているため、使用するために追加のものをインストールする必要はありません。 fs の仕組みとその主要な機能を見てみましょう。

1. fs モジュールとは何ですか?

fs モジュールは、標準の POSIX 関数を中心に厳密にモデル化された方法でファイル システムと対話するための API を提供します。このモジュールは、ファイルの読み取りと書き込み、ディレクトリの作成などのタスクに使用されます。

2. 基本的なセットアップ

fs モジュールを使用するには、Node.js スクリプトの先頭でそれを要求する必要があります:

const fs = require('fs');

3. ファイルの読み込み

ファイルを読み取るには、主に非同期と同期の 2 つの方法があります。

非同期読み取り

このメソッドはノンブロッキングです。つまり、ファイルの読み取り中にプログラムの実行は停止しません。

fs.readFile('example.txt', 'utf8', (err, data) => {
    if (err) {
        console.error(err);
        return;
    }
    console.log(data);
});
  • 'example.txt': 読み込むファイル。
  • 'utf8': 使用するエンコーディングを指定します。
  • コールバック関数: エラーとファイル データを処理します。

同期読み取り

このメソッドはブロックしています。つまり、ファイルが読み取られるまでプログラムの実行が停止します。

try {
    const data = fs.readFileSync('example.txt', 'utf8');
    console.log(data);
} catch (err) {
    console.error(err);
}

4. ファイルの書き込み

ファイルの読み取りと同様に、書き込みも非同期または同期で実行できます。

非同期書き込み

fs.writeFile('example.txt', 'Hello, World!', (err) => {
    if (err) {
        console.error(err);
        return;
    }
    console.log('File has been saved!');
});

同期書き込み

try {
    fs.writeFileSync('example.txt', 'Hello, World!');
    console.log('File has been saved!');
} catch (err) {
    console.error(err);
}

5. ファイルへの追加

既存のファイルにコンテンツを上書きせずに追加する場合は、appendFile メソッドを使用します。

非同期追加

fs.appendFile('example.txt', '\nAppended Content', (err) => {
    if (err) {
        console.error(err);
        return;
    }
    console.log('Content has been appended!');
});

同期追加

try {
    fs.appendFileSync('example.txt', '\nAppended Content');
    console.log('Content has been appended!');
} catch (err) {
    console.error(err);
}

6. ファイルの削除

ファイルを削除するには、unlink メソッドを使用します。

非同期削除

fs.unlink('example.txt', (err) => {
    if (err) {
        console.error(err);
        return;
    }
    console.log('File deleted!');
});

同期削除

try {
    fs.unlinkSync('example.txt');
    console.log('File deleted!');
} catch (err) {
    console.error(err);
}

7. ディレクトリの操作

ディレクトリの作成

fs.mkdir('newDir', { recursive: true }, (err) => {
    if (err) {
        console.error(err);
        return;
    }
    console.log('Directory created!');
});

ディレクトリの読み取り

fs.readdir('newDir', (err, files) => {
    if (err) {
        console.error(err);
        return;
    }
    console.log('Files in directory:', files);
});

ディレクトリの削除

fs.rmdir('newDir', { recursive: true }, (err) => {
    if (err) {
        console.error(err);
        return;
    }
    console.log('Directory deleted!');
});

8. ファイルの監視

fs.watch メソッドを使用してファイル内の変更を監視できます:

fs.watch('example.txt', (eventType, filename) => {
    if (filename) {
        console.log(`${filename} file Changed!`);
    }
});

9. ストリームの操作

Node.js は、メモリに収まらない可能性のある大きなファイルを処理するための fs ストリームを提供します。

ストリームを使用した読み取り

const readStream = fs.createReadStream('example.txt', 'utf8');
readStream.on('data', (chunk) => {
    console.log(chunk);
});

ストリームを使用した書き込み

const writeStream = fs.createWriteStream('example.txt');
writeStream.write('Hello, ');
writeStream.write('World!');
writeStream.end();

10. ファイルのコピー

Node.js はファイルをコピーするための簡単な方法を提供します:

fs.copyFile('source.txt', 'destination.txt', (err) => {
    if (err) {
        console.error(err);
        return;
    }
    console.log('File copied successfully!');
});

11. 約束のFS

fs モジュールには Promise ベースのメソッドもあり、async/await などの最新の JavaScript 機能を簡単に操作できるようになります。

const fsPromises = require('fs').promises;

async function readFile() {
    try {
        const data = await fsPromises.readFile('example.txt', 'utf8');
        console.log(data);
    } catch (err) {
        console.error(err);
    }
}

readFile();

12. 実際の使用例

  • 構成ファイル: 設定を保存するための構成ファイル (JSON ファイルなど) の読み取りまたは書き込みを行います。
  • ログ ファイル: アプリケーション イベントを追跡するためにログ ファイルに追加します。
  • ファイルのアップロード: アップロードされたファイルを保存および取得します。
  • データ処理: ストリームを使用して、大規模なデータセットを効率的に読み取り、処理、書き込みします。

13. エラー処理とベストプラクティス

  • 常にコールバック関数でエラーを処理するか、同期コードで try-catch ブロックを使用します。
  • ほとんどの場合、パフォーマンスを向上させるために非同期メソッドを使用します。
  • よりクリーンで最新のコードを実現するには、fs.promises の使用を検討してください。
  • 同期メソッドはイベント ループをブロックする可能性があるため注意してください。
  • ファイル システム フラグには fs.constants を使用します (読み取り専用アクセスの場合は fs.constants.O_RDONLY など)。

14. セキュリティに関する考慮事項

  • ファイル パスを検証してサニタイズし、ディレクトリ トラバーサル攻撃を防ぎます。
  • ユーザーが指定したファイル名またはパスを扱うときは注意してください。
  • ファイルやディレクトリを作成または変更するときは、適切なファイル権限を使用してください。

15. 結論

fs モジュールは多用途であり、ファイル システムと対話する必要がある Node.js アプリケーションにとって不可欠です。そのさまざまな方法を理解し、ストリームを効率的に処理し、ベスト プラクティスを採用することで、Node.js でのファイル操作を効果的かつ安全に管理できるようになります。

fs モジュールの最新情​​報と追加機能については、必ず公式 Node.js ドキュメントを参照してください。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/shanu001x/file-system-nodejs-fs-module-1hg6?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3