## ファイル・ディレクトリの指定方法

FatFsモジュールでのファイル、ディレクトリ、ドライブの指定方法はMS-DOSとほぼ同じです。パス名のフォーマットは次の通りです。

     "[論理ドライブ番号:][/]ディレクトリ名/ファイル名"

FatFsモジュールは長いファイル名および8.3形式ファイル名に対応しています。長いファイル名は、`_USE_LFN == 1`のとき使用可能になります。ディレクトリ・セパレータには / または \ を使用します。論理ドライブ番号は、'0'〜'9'の一文字の数字とコロンで指定します。省略した場合は、デフォルト・ドライブ(0またはカレント・ドライブ)が選択されます

標準構成で相対パス無効`(_FS_RPATH == 0)`のときは、全てのオブジェクトがルート・ディレクトリから辿る絶対パスで指定されます。OS指向なカレント・ディレクトリという概念は無く、またドット名("."や"..")は使用できません。パス名先頭のセパレータは無視されます。デフォルト・ドライブ番号は常に0になります。

相対パスを有効`(_FS_RPATH == 1)`にしたときは、先行するセパレータの有無によって検索開始ディレクトリが変わり、セパレータがある場合はルート・ディレクトリから、無い場合はf_chdir関数で設定されるカレント・ディレクトリからになります。またパス名の指定にドット名が使用できます。デフォルト・ドライブ番号はf_chdrive関数で設定された値となります。

パス名 | _FS_RPATH == 0 | _FS_RPATH == 1
file.txt | ドライブ0のルート・ディレクトリ下のファイル | カレント・ドライブのカレント・ディレクトリ下のファイル
/file.txt | ドライブ0のルート・ディレクトリ下のファイル | カレント・ドライブのルート・ディレクトリ下のファイル
| ドライブ0のルート・ディレクトリ | カレント・ドライブのカレント・ディレクトリ
2: | ドライブ2のルート・ディレクトリ | ドライブ2のカレント・ディレクトリ
2:file1.txt | ドライブ2のルート・ディレクトリ下のファイル | ドライブ2のカレント・ディレクトリ下のファイル
2:/ | ドライブ2のルート・ディレクトリ | ドライブ2のルート・ディレクトリ
../file.txt | 無効 | 親ディレクトリ下のファイル
. | 無効 | このディレクトリ
.. | 無効 | カレント・ディレクトリの親ディレクトリ
dir1/.. | 無効 | カレント・ディレクトリ
/.. | 無効 | 無効(ルート・ディレクトリではドット名は使用不可)

## 論理ドライブと物理ドライブの対応

標準構成では、それぞれの論理ドライブは同じ番号の物理ドライブに1:1で結びつけられていて、物理ドライブの先頭の区画がマウントされます。`_MULTI_PARTITION == 1`を指定すると、論理ドライブに対して個別に物理ドライブ番号・区画を指定できるようになります。この構成では、論理ドライブと区画の対応を解決するためのテーブルを次に示すように定義する必要があります。

    例:論理ドライブ0〜2を物理ドライブ0(固定ディスク)の3つの基本区画に割り当て、
       論理ドライブ3を物理ドライブ1(リムーバブル・ディスク)に割り当てる場合。

    const PARTITION Drives[] = {
        {0, 0},     /* Logical drive 0 ==> Physical drive 0, 1st partition */
        {0, 1},     /* Logical drive 1 ==> Physical drive 0, 2nd partition */
        {0, 2},     /* Logical drive 2 ==> Physical drive 0, 3rd partition */
        {1, 0}      /* Logical drive 3 ==> Physical drive 1 */
    };

複数区画指定を使用する場合、次の点に注意しなければなりません。

- 指定可能な区画は基本区画(0〜3)のみ。
- 物理ドライブがSFD形式(区画テーブル無し)の場合、区画指定は無視される。
- 複数の論理ドライブを持つ物理ドライブは、固定ディスクでなければならない。