絶対パス名¥a¥a¥b¥cをもつディレクトリがカレントディレクトリであるとき,相対パス名.¥..¥..¥a¥b¥fileをもつファイルを,絶対パス名で表現したものはどれか。
ここで,ディレクトリ及びファイルの指定方法は,次の規則に従うものとする。
〔ディレクトリ及びファイルの指定方法〕
(1) ファイルは,“ディレクトリ名¥…¥ディレクトリ名¥ファイル名”のように,経路上のディレクトリを順に“¥”で区切って並べた後に“¥”とファイル名を指定する。
(2) カレントディレクトリは“.”で表す。
(3) 1階層上のディレクトリは“..”で表す。
(4) 始まりが“¥”のときは,左端にルートディレクトリが省略されているものとする。
(5) 始まりが“¥”,“.”,“..”のいずれでもないときは,左端にカレントディレクトリ配下であることを示す“.¥”が省略されているものとする。
正答3
解説
正解は3です。
カレントディレクトリと相対パス名から、ファイルの絶対パス名を求める問題です。
「.」はカレントディレクトリ、「..」は1階層上のディレクトリを表します。
【計算】
カレントディレクトリは ¥a¥a¥b¥c です。
先頭の「.¥」はカレントディレクトリなので、位置は ¥a¥a¥b¥c のままです。
1つ目の「..¥」で1階層上がり、¥a¥a¥b になります。
2つ目の「..¥」でさらに1階層上がり、¥a¥a になります。
そこから「a¥b¥file」と下ると、¥a¥a¥a¥b¥file になります。
【選択肢別解説】
1:× ¥a¥b¥file は、ルートまで上がってから a¥b¥file をたどった位置です。
2階層上がった位置は ¥a¥a なので、先頭に ¥a¥a が足りません。
2:× ¥a¥a¥b¥file は、上がる階層を3階層と数え間違えた場合の結果です。
2回の「..」では ¥a¥a までしか上がりません。
3:○ ¥a¥a から a¥b¥file をたどった ¥a¥a¥a¥b¥file になるので正しいです。
4:× ¥a¥a¥b¥a¥b¥file は、「..」を1回分しか処理しなかった場合の結果です。
2回上がる必要があります。
【ポイント】
相対パスは、先頭から1要素ずつ「今いる場所」を書き換えていくと間違えません。
「.」は位置を変えず、「..」で1階層上がると覚えます。