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

Node.js環境におけるすべてのファイル操作は、fsコアモジュールを通じて実装されます。ファイルの作成、削除、クエリ、および読み取りと書き込みが含まれます。

fsモジュールでは、すべてのメソッドが同期と非同期の2つの実装に分かれています。syncサフィックスを持つメソッドは同期メソッドであり、syncサフィックスを持たないメソッドは非同期メソッドです。

ファイルの読み取り

同期ファイル読み取りreadFileSync

最初のパラメータは、読み取るファイルのパスまたはファイル記述子です。

2番目のパラメータはoptionsで、デフォルト値はnullです。

const fileSystem = require('fs');
fileSystem.readFile('./docs/sample.txt',(error,content)=>{
   if(error){
    console.log('ファイルが見つかりません');
  }else{
    console.log(content.toString());
  }
});
//readFileSyncは成功状態のみを返し、ファイルが見つからない場合はエラーをスローします
try {
    let content = fileSystem.readFileSync('./docs/sample.txt');
    console.log(content.toString());
} catch (error) {
    console.error(error);
}
console.log('処理完了');

非同期ファイル読み取りreadFile

最初のパラメータは、読み取るファイルのパスまたはファイル記述子です。

2番目のパラメータはoptionsで、デフォルト値はnullです。

3番目のパラメータはコールバック関数です。

関数内にはerr(エラー)とcontent(データ)の2つのパラメータがあり、このメソッドは戻り値を持ちません。コールバック関数はファイルの読み取りが成功した後に実行されます。

//ファイルの読み取り
fileSystem.readFile("sample.txt",function (error,content) {
     if (error){
        console.error(error)
     }else {
         console.log(content.toString())
     }
 })

ファイルの書き込み

同期ファイル書き込みwriteFileSync

最初のパラメータは、書き込むファイルのパスまたはファイル記述子です。

2番目のパラメータは書き込むデータで、StringまたはBuffer型です。

3番目のパラメータはoptionsで、デフォルト値はnullです。

const fileSystem = require("fs");
fileSystem.writeFileSync("output.txt", "こんにちは、世界");
let content = fileSystem.readFileSync("output.txt", "utf8");
console.log(content);

非同期ファイル書き込みwriteFile

最初のパラメータは、書き込むファイルのパスまたはファイル記述子です。

2番目のパラメータはoptionsで、デフォルト値はnullです。

let fileSystem = require('fs');

fileSystem.writeFile('./public/output.txt','これはテストデータです',(error)=>{
    if(error){
         console.log('書き込みに失敗しました');
    }else{
         console.log('書き込みが成功しました');
    }
 })

ファイルの削除

同期ファイル削除unlinkSync

const fileSystem = require("fs");
fileSystem.unlinkSync("temp/oldfile.js");

非同期ファイル削除unlink

const fileSystem = require("fs");
fileSystem.unlink("temp/unused.js", err => {
    if (!err) console.log("ファイルが正常に削除されました");
});

例—URLがAPIリクエストか静的リソース(ページ)リクエストかを判断する

考え方: URLに?が含まれている場合はAPIリクエストを意味します。 それ以外の場合は静的ファイルであり、パスを構成する必要があります。

let httpServer = require('http'); //HTTPサーバーを構築するためにhttpモジュールを導入
let fileSystem = require('fs'); //読み取り、書き込み、削除などの操作が必要な場合にfsファイルシステムモジュールを導入
httpServer.createServer((request,response)=>{
    //APIリクエストか静的ページリクエストかを判断
    let requestUrl = request.url;
    if(requestUrl.includes('?')){//URLに?が含まれている場合、APIリクエストを意味します
        //クライアントにヘッダー情報を送信(中国語の文字化けを防ぐため)
        response.writeHead(200,{'Content-Type':'text/html;charset=utf-8'});
        response.write('毎日少しずつ進歩しましょう');
        response.end();
    }else{//それ以外の場合は静的ページリクエストです
    //スラッシュはlocalhostを表します
    //デフォルトでindexファイルを表示
        if(requestUrl === '/') {requestUrl = '/index.html';}
            //ファイルを読み込む
            fileSystem.readFile('./public'+requestUrl,(error,content)=>{
              if(error){
                  //ファイルが存在しない場合は404ページを読み込み
                  let content = fileSystem.readFileSync('./public/404.html');
                  response.write(content);
              }else{
                  //ファイルが存在すればクライアントに送信
                  response.write(content);
              }
              response.end();//レスポンスの終了
            });
    }
}).listen(8080);//ポートを監視

タグ: Node.js fs-module file-operations asynchronous-programming synchronous-programming

8月9日 13:38 投稿