[第6回] Node.jsのファイルシステム

Node.js

 

はじめに

 

皆さん。こんにちは! DreamHanksのエルムです。

今回はNode.jsのファイルシステムについて説明していきます。

前回の記事は[第5回] Node.js Webサーバです。

 

Node.jsには、物理的なファイルシステムにアクセスするためのfsモジュールが搭載されています。fsモジュールは、非同期または同期のファイルI/O操作をすべて担当します。

 

ここでは、fsモジュールを用いた一般的なI/O操作の例をご紹介します。

 

ファイルを読む方法

 

非同期に物理ファイルを読み込むには、fs.readFile()メソッドを使用します:

 

パラメータの説明

 

  • ファイル名: ファイルのフルパスと名前を文字列で指定します。
  • オプション: オプションパラメータには、エンコーディングとフラグを含むオブジェクトまたは文字列を指定します。デフォルトのエンコーディングはutf8、デフォルトのフラグは “r “です。
  • コールバック: 2つのパラメータ err と fd を持つ関数です。readFileの操作が完了すると、この関数が呼び出されます。

 

以下の例では、既存のTestFile.txtを非同期に読み込んでいます:

 

上記の例では、非同期にTestFile.txt(Windowsの場合)を読み込み、読み込み操作が完了したときにコールバック関数を実行しています。この読み取り操作は、エラーが発生するか、または正常に完了します。errパラメータには,エラー情報があればその情報が格納されます。dataパラメータには,指定されたファイルの内容が格納されています.

 

以下は、TextFile.txtのサンプルファイルです:

TextFile.txt:

 

では、上記の例を実行して、以下のような結果をご覧ください:

 

同期的にファイルを読み込むには、以下のようにfs.readFileSync()メソッドを使用します:

 

 

ファイルを書く方法

 

データをファイルに書き込むには、fs.writeFile()メソッドを使用する。ファイルが既に存在する場合は既存の内容を上書きし、そうでない場合は新しいファイルを作成してそこにデータを書き込みます。

 

パラメータの説明

 

  • ファイル名: ファイルのフルパスと名前を文字列で指定します。
  • データ: ファイルに書き込む内容です。
  • オプション: オプションには、エンコーディング、モード、フラグを含むオブジェクトまたは文字列を指定します。デフォルトのエンコーディングはutf8、デフォルトのフラグは “r “です。
  • コールバック: 2つのパラメータ err と fd を持つ関数です。これは、書き込み操作が完了したときに呼び出されます。

 

次の例では、test.txtという新しいファイルを作成し、そこに「Hello DreamHanks」を非同期で書き込んでいます。

例: ファイルの作成と書き込み:

 

 

同様に、fs.appendFile()メソッドを使用して、既存のファイルに内容を追加します:

 

 

ファイルを開く方法

 

また、fs.open()メソッドを使用して、ファイルを読み書き可能な状態にすることもできます。

 

パラメータの説明

 

  • パス: ファイルの名前を文字列で表したフルパス。
  • フラグ: 操作を行うためのフラグです。
  • モード: 読み込みと書き込みのモードを指定します。デフォルトは 0666 readwrite です。
  • コールバック: 2つのパラメータ err と fd を持つ関数です。これは、書き込み操作が完了したときに呼び出されます。

 

フラグ

 

次の表は、読み取り/書き込み操作で使用できるすべてのフラグの一覧です:

 

フラグ 説明
r ファイルを読み込みのために開きます。ファイルが存在しない場合は例外が発生します。
r+ ファイルを読み書き可能な状態にします。ファイルが存在しない場合は例外が発生します。
rs ファイルを同期モードで読み込み用に開きます。
rs+ ファイルを読み書き可能な状態で開き、OSに同期して開くように指示します。注意して使用することについては、「rs」の注記を参照してください。
w ファイルを書き込み用に開く。ファイルが作成される(存在しない場合)、または切り捨てられる(存在する場合)。
wx w と似ていますが、パスが存在すると失敗します。
w+ ファイルを読み書き可能な状態にします。ファイルが作成される(存在しない場合)か、切り捨てられる(存在する場合)。
wx+ w+ と似ていますが、パスが存在すると失敗します。
a 追記用のファイルを開きます。ファイルが存在しない場合は作成されます。
ax a と同じですが、パスが存在する場合は失敗します。
a+ ファイルを開いて読み込んだり、追記したりします。ファイルが存在しない場合は作成されます。
ax+ a+ と似ていますが、パスが存在すると失敗します。

 

 

次の例では、既存のファイルを開き、その内容を読み取ります:

例:ファイルを開く、読む:

 

 

ファイルを削除する方法

 

既存のファイルを削除するには、fs.unlink()メソッドを使用します。

 

以下の例では、既存のファイルを削除しています:

 

fsモジュールの重要なメソッド

 

メソッド 説明
fs.readFile(fileName [,options], callback) 既存のファイルを読みます。
fs.writeFile(filename, data[, options], callback) ファイルへの書き込みを行います。ファイルが存在する場合は内容を上書きし、存在しない場合は新しいファイルを作成します。
fs.open(path, flags[, mode], callback) ファイルを読み書きできるように開きます。
fs.rename(oldPath, newPath, callback) 既存のファイルの名前を変更します。
fs.chown(path, uid, gid, callback) 非同期のchownです。
fs.stat(path, callback) ファイルの重要な統計情報を含む fs.stat オブジェクトを返します。
fs.link(srcpath, dstpath, callback) ファイルを非同期にリンクします。
fs.symlink(destination, path[, type], callback) Symlinkは非同期的に行われます。
fs.rmdir(path, callback) 既存のディレクトリの名前を変更します。
fs.mkdir(path[, mode], callback) 新しいディレクトリを作成します。
fs.readdir(path, callback) 指定されたディレクトリの内容を読み取る。
fs.utimes(path, atime, mtime, callback) ファイルのタイムスタンプを変更します。
fs.exists(path, callback) 指定されたファイルが存在するかどうかを判定します。
fs.access(path[, mode], callback) 指定されたファイルに対するユーザーのパーミッションをテストします。
fs.appendFile(file, data[, options], callback) 既存のファイルに新しいコンテンツを追加します。

 

 

終わりに

 

今回の記事は以上になります。

ご覧いただきありがとうございます。

 

 

 

コメント