Skip to content

Node.js ファイルパス

システムファイルパス

システム内のすべてのファイルにはパスがあります。LinuxとmacOSでは、パスは次のようになります。/users/joe/file.txt

一方、Windowsコンピュータでは、C:\users\joe\file.txtのような異なる構造になっています。

アプリケーションでパスを使用する際には、この違いを考慮する必要があります。

path モジュールの使用

このモジュールは、次のようにしてファイルに含めます。

javascript
const path = require('node:path')

そして、そのメソッドを使用することができます。

パスからの情報の取得

パスが与えられると、これらのメソッドを使用してパスから情報を抽出することができます。

  • dirname:ファイルの親フォルダを取得します
  • basename:ファイル名部分を取得します
  • extname:ファイル拡張子を取得します

javascript
const path = require('node:path')
const notes = '/users/joe/notes.txt'

path.dirname(notes) // /users/joe
path.extname(notes) // .txt
javascript
import path from 'node:path'
const notes = '/users/joe/notes.txt'

path.dirname(notes) // /users/joe
path.extname(notes) // .txt

basenameに第二引数として拡張子を指定することで、拡張子を除いたファイル名を取得できます。

javascript
path.basename(notes, path.extname(notes)) // notes

パスの操作

path.join()を使用して、パスの2つ以上の部分を結合することができます。

javascript
path.join('/users', 'joe', 'file.txt') // /users/joe/file.txt

path.resolve()を使用して、相対パスの絶対パス計算を取得できます。

javascript
path.resolve('joe.txt') // ホームフォルダから実行した場合 /Users/joe/joe.txt
path.resolve('tmp', 'joe.txt') // ホームフォルダから実行した場合 /Users/joe/tmp/joe.txt

この場合、Node.jsは現在の作業ディレクトリに/joe.txtを追加するだけです。フォルダとして第二パラメータを指定すると、resolveは最初のものを第二のパラメータのベースとして使用します。

最初のパラメータがスラッシュで始まる場合、それは絶対パスであることを意味します。

javascript
path.resolve('/etc', 'joe.txt') // /etc/joe.txt

path.normalize()は、...、二重スラッシュなどの相対指定子が含まれている場合に、実際のパスを計算しようとするもう1つの便利な関数です。

javascript
path.normalize('/users/joe/../test.txt') // /users/test.txt

resolvenormalizeのどちらも、パスが存在するかどうかはチェックしません。単に、得られた情報に基づいてパスを計算するだけです。