1 <!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
4 <meta http-equiv=
"Content-Type" content=
"text/html; charset=utf-8">
5 <meta http-equiv=
"Content-Style-Type" content=
"text/css">
6 <link rel=
"up" title=
"FatFs" href=
"../00index_j.html">
7 <link rel=
"stylesheet" href=
"../css_j.css" type=
"text/css" media=
"screen" title=
"ELM Default">
8 <title>FatFs - ファイル・ディレクトリの指定方法
</title>
13 <h2>ファイル・ディレクトリの指定方法
</h2>
14 <p>FatFsモジュールでのファイル、ディレクトリ、ドライブの指定方法はDOS/Windowsとほぼ同じです。パス名のフォーマットは次の通りです。
</p>
16 "[<em>論理ドライブ番号</em>:][/]<em>ディレクトリ名</em>/<em>ファイル名</em>"
18 <p>FatFsモジュールは長いファイル名(LFN)および
8.3形式ファイル名(SFN)に対応しています。LFNは、
<tt>(_USE_LFN
> 0)
</tt>のとき使用可能になります。DOS/Windowsとの違いは、ディレクトリ・セパレータと論理ドライブ番号の指定です。ディレクトリ・セパレータには / または \ を使用します。論理ドライブ番号は、'
0'~'
9'の一文字の数字とコロンで指定し、省略した場合はデフォルト・ドライブ(
0またはカレント・ドライブ)が選択されます。パス名に先行あるいは中に含まれるスペースは、LFN構成では名前の一部として有効ですが、非LFN構成ではパス名の終端として認識されます。
</p>
19 <p>標準構成
<tt>(_FS_RPATH ==
0)
</tt>のときは、全てのオブジェクトがルート・ディレクトリから辿る絶対パスで指定されます。OS指向なカレント・ディレクトリという概念は無く、またドット・ディレクトリ(
".
"や
"..
")は使用できません。パス名先頭のセパレータは無視されます。デフォルト・ドライブ番号は常に
0になります。
</p>
20 <p>相対パスを有効
<tt>(_FS_RPATH ==
1)
</tt>にしたときは、先行するセパレータの有無によって検索開始ディレクトリが変わり、セパレータがある場合はルート・ディレクトリから、無い場合は
<a href=
"chdir.html">f_chdir関数
</a>で設定されるカレント・ディレクトリからになります。またパス名にドット・ディレクトリが使用できます。デフォルト・ドライブ番号は
<a href=
"chdrive.html">f_chdrive関数
</a>で設定された値となります。
</p>
22 <tr><td>パス名
</td><td>_FS_RPATH ==
0</td><td>_FS_RPATH ==
1</td></tr>
23 <tr class=
"lst3"><td>file.txt
</td><td>ドライブ
0のルート・ディレクトリ下のファイル
</td><td>カレント・ドライブのカレント・ディレクトリ下のファイル
</td></tr>
24 <tr><td>/file.txt
</td><td>ドライブ
0のルート・ディレクトリ下のファイル
</td><td>カレント・ドライブのルート・ディレクトリ下のファイル
</td></tr>
25 <tr><td></td><td>ドライブ
0のルート・ディレクトリ
</td><td>カレント・ドライブのカレント・ディレクトリ
</td></tr>
26 <tr><td>2:
</td><td>ドライブ
2のルート・ディレクトリ
</td><td>ドライブ
2のカレント・ディレクトリ
</td></tr>
27 <tr><td>2:file1.txt
</td><td>ドライブ
2のルート・ディレクトリ下のファイル
</td><td>ドライブ
2のカレント・ディレクトリ下のファイル
</td></tr>
28 <tr><td>2:/
</td><td>ドライブ
2のルート・ディレクトリ
</td><td>ドライブ
2のルート・ディレクトリ
</td></tr>
29 <tr><td>../file.txt
</td><td>無効
</td><td>親ディレクトリ下のファイル
</td></tr>
30 <tr><td>.
</td><td>無効
</td><td>このディレクトリ
</td></tr>
31 <tr><td>..
</td><td>無効
</td><td>カレント・ディレクトリの親ディレクトリ
</td></tr>
32 <tr><td>dir1/..
</td><td>無効
</td><td>カレント・ディレクトリ
</td></tr>
33 <tr><td>/..
</td><td>無効
</td><td>無効(ルート・ディレクトリではドット名は使用不可)
</td></tr>
40 <p>ファイル関数の入出力のうちファイル名やパス名を指定する引数の型は、
<tt>XCHAR
</tt>で定義されていますが、これは
<tt>char
</tt>のエリアスになっています。そして、
<tt>_CODE_PAGE
</tt>で指定される OEMコード(SBCSまたはDBCS)の文字列として扱われます。ファイル名入出力をUnicodeとする構成(LFN構成で、かつ
<tt>_LFN_UNICODE
</tt>を
1)にしたときは、
<tt>XCHAR
</tt>はワイド文字(
<tt>unsigned short
</tt>)に切り替わり、パス名にUnicodeを使用するようになります。これにより LFNフル対応となり、OEMコードにない文字(たとえば ✝☪✡☸☭など)も使用できます。
</p>
45 <h2>論理ドライブ(ボリューム)と物理ドライブ(ディスク装置)の対応
</h2>
46 <p>デフォルトの構成では、それぞれの論理ドライブは同じ番号の物理ドライブに
1:
1で結びつけられていて、物理ドライブの先頭の区画がマウントされます。
<tt>_MULTI_PARTITION
</tt>に
1を指定すると、論理ドライブに対して個別に物理ドライブ番号・区画を指定できるようになります。この構成では、論理ドライブと区画の対応を解決するためのテーブルを次に示すように定義する必要があります。
</p>
48 例:論理ドライブ
0~
2を物理ドライブ
0(固定ディスク)の
3つの基本区画に割り当て、
49 論理ドライブ
3を物理ドライブ
1(リムーバブル・ディスク)に割り当てる場合。
51 const PARTITION Drives[] = {
52 {
0,
0}, /* Logical drive
0 ==
> Physical drive
0,
1st partition */
53 {
0,
1}, /* Logical drive
1 ==
> Physical drive
0,
2nd partition */
54 {
0,
2}, /* Logical drive
2 ==
> Physical drive
0,
3rd partition */
55 {
1,
0} /* Logical drive
3 ==
> Physical drive
1 */
58 <p>複数区画指定を使用する場合、次の点に注意しなければなりません。
60 <li>指定可能な区画は基本区画(
0~
3)のみ。
</li>
61 <li>物理ドライブがSFD形式(区画テーブル無し)の場合、区画指定は無視される。
</li>
62 <li>複数の論理ドライブを持つ物理ドライブは、固定ディスクでなければならない。
</li>