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

WBOY
リリース: 2024-08-24 15:01:33
オリジナル
334 人が閲覧しました

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 ドキュメントを参照してください。

以上がファイル システム: Node.js `fs` モジュールの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!