Node.js ファイルパス
システム内のすべてのファイルにはパスがあります。Linux と macOS では、パスは /users/joe/file.txt
のように見える場合があります。一方、Windows コンピュータは異なり、C:\users\joe\file.txt
などの構造になっています。
アプリケーションでパスを使用する際には注意が必要です。この違いを考慮する必要があります。
このモジュールは、`const path = require('node:path');` を使用してファイルに含めることができ、そのメソッドを使用できます。
パスからの情報の取得
パスが与えられると、これらのメソッドを使用してパスから情報を抽出できます。
dirname
: ファイルの親フォルダを取得します。basename
: ファイル名部分を取得します。extname
: ファイル拡張子を取得します。
例
const path = require('node:path');
const notes = '/users/joe/notes.txt';
path.dirname(notes); // /users/joe
path.basename(notes); // notes.txt
path.extname(notes); // .txt
basename
に第二引数を指定することで、拡張子を除いたファイル名を取得できます。
path.basename(notes, path.extname(notes)); // notes
パス操作
path.join()
を使用して、パスの2つ以上の部分を結合できます。
const name = 'joe';
path.join('/', 'users', name, 'notes.txt'); // '/users/joe/notes.txt'
path.resolve()
を使用して、相対パスの絶対パス計算を取得できます。
path.resolve('joe.txt'); // '/Users/joe/joe.txt' if run from my home folder
この場合、Node.js は現在の作業ディレクトリに /joe.txt
を追加するだけです。第二パラメータとしてフォルダを指定すると、resolve
は最初のものを第二のパラメータのベースとして使用します。
path.resolve('tmp', 'joe.txt'); // '/Users/joe/tmp/joe.txt' if run from my home folder
最初の引数がスラッシュで始まる場合、それは絶対パスであることを意味します。
path.resolve('/etc', 'joe.txt'); // '/etc/joe.txt'
path.normalize()
は別の便利な関数で、.
や ..
、または二重スラッシュなどの相対指定子を含む場合に、実際のパスの計算を試みます。
path.normalize('/users/joe/..//test.txt'); // '/users/test.txt'
resolve と normalize はどちらも、パスが存在するかどうかをチェックしません。単に、受け取った情報に基づいてパスを計算するだけです。