Next: , Previous: , Up: File Names   [Contents][Index]


24.8.2 絶対ファイル名と相対ファイル名

ファイルシステム内のすべてのディレクトリーはルートディレクトリーから開始されるツリーを形成します。このツリーのルートから開始されるすべてのディレクトリー名によってファイル名を指定することができ、それを絶対(absolute)ファイル名と呼びます。デフォルトディレクトリーからの相対的なツリー中の位置でファイルを指定することもでき、それは相対(relative)ファイル名と呼ばれます。UnixとGNU/Linuxでは、絶対ファイル名は‘/’か‘~’で始まり、相対ファイル名は異なります(abbreviate-file-nameを参照)。MS-DOSとMS-Windowsでは絶対ファイル名はスラッシュ、バックスラッシュ、またはドライブ指定‘x:/’で始まります。ここでxドライブ文字(drive letter)です。

Function: file-name-absolute-p filename

この関数はfilenameが絶対ファイル名ならt、それ以外はnilをリターンする。

(file-name-absolute-p "~rms/foo")
     ⇒ t
(file-name-absolute-p "rms/foo")
     ⇒ nil
(file-name-absolute-p "/user/rms/foo")
     ⇒ t

相対ファイル名が与えられるとexpand-file-nameを使用して、それを絶対ファイル名に変換できます(File Name Expansionを参照)。以下の関数は絶対ファイル名を相対ファイル名に変換します:

Function: file-relative-name filename &optional directory

この関数はdirectory(絶対ディレクトリー名かディレクトリーファイル名)から相対的なファイルと仮定して、filenameと等価な相対ファイル名のリターンを試みる。directoryが省略かnilなら、カレントバッファーのデフォルトディレクトリーがデフォルト。

絶対ファイル名がデバイス名で始まるオペレーティングシステムがいくつか存在する。そのようなシステムでは、2つの異なるデバイス名から開始されるfilenameは、directoryにもといた等価な相対ファイル名をもたない。この場合には、file-relative-nameは絶対形式でfilenameをリターンする。

(file-relative-name "/foo/bar" "/foo/")
     ⇒ "bar"
(file-relative-name "/foo/bar" "/hack/")
     ⇒ "../foo/bar"