NodeJSFsモジュール


FSモジュール

  • ファイル処理用モジュール、つまりFileSystem
  • メソッドは同期/非同期メソッドに分けられ、Syncというメソッドは同期メソッドを使用する
  • 3つの形態.


    1. renameSync(....)


    :同期、コールバック関数return X

    2. rename(oldpath, newpath, callback)


    :非同期、すべてのタスクを完了したらcallbackを実行

    3. fs.promises.rename().then().catch()


    :promise形式で使用します.errorを扱うためにはcatchを必ず書きます.

    1. Sync(...) : 動機。


    try{ renameSync( ... ) } catch(e){console.error(e)}


    :同期して実行し、すべて実行するまで、次のステップにジャンプしません.
    :コールバック関数は指定されません.
    :renameSyncは同期して実行されるため、try、catchがエラーをキャプチャしない場合、エラーが発生した場合、後続の実行は発生しません.したがってsyncの場合はtry、catchを必ず使用します.
    try {
      fs.renameSync('./sub22.html', './sub.js');
    } catch (err) {
      console.error(err);
    }
    console.log('END AFTER');
    // try catch로 잡아주지 않으면, error 발생시 console.log('END AFTER');이 실행되지 않는다.

    2.rename(oldpath、newpath、callback):非同期

  • 非同期運転.
  • 全てのタスクを完了した後、結果を受け取ってコールバック関数を実行する.
  • 非同期で記述する場合は、コールバック関数で適切なエラー処理を行う必要があります.
  • // rename
    fs.rename('./sub.js', './subsub.js', (err) => {
      console.log(err);
    });
    
    console.log('1');
    console.log('2');
    
    // readFile
    fs.readFile('./text.txt', 'utf8', (err, res) => {
      if (err) {
        console.error(err);
      } else {
        console.log(res);
      }
    });
    renameもreadFileも非同期で実行されているため、renameを先に実行するかreadFileを先に実行するか分かりません.

    fs.promises.rename().then().catch():非同期

  • const fs = require('fs').promisesなど、約束で呼び起こすことができます.
  • import { promises as fsPromises } from 'fs'
  • promiseで動作するので非同期で実行されます.
  • errorはcatchでキャプチャしなければならない.
  • const fs=require(「fs」)は、以下のようになります。

    const fs = require('fs');
    
    fs.promises
      .readFile('./text.txt', 'utf8')
      .then((data) => console.log(data))
      .catch((err) => console.error(err));
    
    console.log('this is console.log');
    
    //this is console.log
    //this is text.txt

    const fs = require('fs').約束された状況は以下の通りです。

    const fs = require('fs').promises;
    
    fs.readFile('./text.txt', 'utf8')
      .then((data) => console.log(data))
      .catch(console.error);
      
    fs.writeFile('./text.txt', 'hello hello hello')
       .catch(console.error);

    FSメソッド

    const fs = require('fs').promises例として例を書く
    すべての方法は非同期で実行されます.
    したがって、appendFildになる前にレプリケーションが完了する可能性があり、予想される結果が得られない可能性があります.

    fs.readFile


    デフォルトはBufferです.utf 8のようにオプションを設定できます.
    fs.readFile('./text.txt', 'utf8')
      .then((data) => console.log(data))
      .catch(console.error);

    fs.writeFile

  • writeFileはpromiseなので何も返さない.
  • ただし、catchはやらなければならない.
  • fs.writeFile('./text.txt', 'hello hello hello')
      .catch(console.error);

    fs.appendFile

  • ファイルの既存コンテンツに追加する.
  • fs.appendFile('./text.txt', 'yoyoyo').catch(console.error);

    fs.copyFile

  • ファイルコピー
  • fs.copyFile('./text.txt', './text2.txt').catch(console.error);

    fs.mkdir

  • ディレクトリの作成、戻り値なし
  • fs.mkdir('sub-folder') //
      .catch(console.error);

    fs.unlink

  • ファイルの削除
  • fs.unlink('./text2.txt') //
      .catch(console.error);

    fs.readdir

  • string配列で該当経路のファイル名を返す
  • fs.readdir('./') //
      .then(console.log)
      .catch(console.error);