]> cloudbase.mooo.com Git - z180-stamp.git/blame - fatfs/doc/ja/readdir.html
Import fatfs R0.12b
[z180-stamp.git] / fatfs / doc / ja / readdir.html
CommitLineData
53668523
L
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">\r
2<html lang="ja">\r
3<head>\r
7b78a5a2 4<meta http-equiv="Content-Type" content="text/html; charset=utf-8">\r
53668523
L
5<meta http-equiv="Content-Style-Type" content="text/css">\r
6<link rel="up" title="FatFs" href="../00index_j.html">\r
7<link rel="alternate" hreflang="en" title="English" href="../en/readdir.html">\r
8<link rel="stylesheet" href="../css_j.css" type="text/css" media="screen" title="ELM Default">\r
9<title>FatFs - f_readdir</title>\r
10</head>\r
11\r
12<body>\r
13\r
14<div class="para func">\r
15<h2>f_readdir</h2>\r
7b78a5a2 16<p>ディレクトリ項目を読み出します。</p>\r
53668523
L
17<pre>\r
18FRESULT f_readdir (\r
7b78a5a2
L
19 DIR* <span class="arg">dp</span>, <span class="c">/* [IN] ディレクトリ ブジェクト構造体へのポインタ */</span>\r
20 FILINFO* <span class="arg">fno</span> <span class="c">/* [OUT] ファイル情報構造体へのポインタ */</span>\r
53668523
L
21);\r
22</pre>\r
23</div>\r
24\r
25<div class="para arg">\r
7b78a5a2 26<h4>引数</h4>\r
53668523
L
27<dl class="par">\r
28<dt>dp</dt>\r
70702af1 29<dd><tt>f_opendir</tt>関数で作成された有効なディレクトリ オブジェクトへのポインタを指定します。</dd>\r
53668523 30<dt>fno</dt>\r
70702af1 31<dd>読み出したディレクトリ項目を格納する<a href="sfileinfo.html">ファイル情報構造体</a>へのポインタ、またはヌル ポインタを指定します。</dd>\r
53668523
L
32</dl>\r
33</div>\r
34\r
35\r
36<div class="para ret">\r
7b78a5a2 37<h4>戻り値</h4>\r
53668523
L
38<p>\r
39<a href="rc.html#ok">FR_OK</a>,\r
40<a href="rc.html#de">FR_DISK_ERR</a>,\r
41<a href="rc.html#ie">FR_INT_ERR</a>,\r
53668523
L
42<a href="rc.html#io">FR_INVALID_OBJECT</a>,\r
43<a href="rc.html#tm">FR_TIMEOUT</a>,\r
44<a href="rc.html#nc">FR_NOT_ENOUGH_CORE</a>\r
45</p>\r
46</div>\r
47\r
48\r
49<div class="para desc">\r
7b78a5a2 50<h4>解説</h4>\r
70702af1
L
51<p>ディレクトリの項目(ファイルおよびサブ ディレクトリ)の情報を順次読み出します。この関数を繰り返し実行することによりそのディレクトリの全ての項目を読み出すことができます。得られるファイル情報の詳細については <tt>FILINFO</tt>構造体を参照してください。全ての項目が読み出され、読み出す項目がもう無いときは、<tt>fno-&gt;fname[]</tt>にヌル文字列が返されます。<tt class="arg">fno</tt>にヌル ポインタを指定すると、そのディレクトリのリード インデックスを先頭に巻き戻します。サブ ディレクトリのドット エントリ(<tt>"."</tt>と<tt>".."</tt>)は、出力に現れません。</p>\r
52<p>LFN構成では、<tt>altname[]</tt>が新たに定義され、そのオブジェクトの短いファイル名がストアされます。次の条件のときは長いファイル名を返せないので<tt>fname[]</tt>に短いファイル名がストアされ、<tt>altname[]</tt>はヌル文字列になります。</p>\r
53668523 53<ul>\r
70702af1
L
54<li>オブジェクトが長いファイル名を持っていない。(exFATボリュームでは該当せず)</li>\r
55<li><tt>_MAX_LFN</tt>の設定がその長いファイル名の長さに対して不十分 (<tt>_MAX_LFN == 255</tt>では該当せず)</li>\r
56<li>長いファイル名にANSI/OEMコードに無い文字が含まれている。(<tt>_LFN_UNICODE == 1</tt>では該当せず)</li>\r
53668523 57</ul>\r
70702af1 58<p>exFATボリュームのディレクトリを読み出すとき、構成によっては問題が発生します。exFATでは短いファイル名がサポートされません。つまり、上記の条件のとき代わりに返すファイル名が無いということです。このような場合は<tt>fname[]</tt>に"?"が返され、そのオブジェクトにアクセスできないことを示します。この問題を避けるには、FatFsの構成を<tt>_LFN_UNICODE = 1</tt>および<tt>_MAX_LFN = 255</tt>として長いファイル名に完全対応とする必要があります。</p>\r
53668523
L
59</div>\r
60\r
53668523 61<div class="para comp">\r
7b78a5a2
L
62<h4>対応情報</h4>\r
63<p><tt>_FS_MINIMIZE &lt;= 1</tt>のときに使用可能です。</p>\r
53668523
L
64</div>\r
65\r
66\r
67<div class="para use">\r
7b78a5a2 68<h4>使用例</h4>\r
53668523 69<pre>\r
70702af1
L
70FATFS fs;\r
71char buff[256];\r
72\r
53668523 73FRESULT scan_files (\r
7b78a5a2 74 char* path <span class="c">/* 開始ノード (ワークエリアとしても使用) */</span>\r
53668523
L
75)\r
76{\r
77 FRESULT res;\r
53668523 78 DIR dir;\r
70702af1
L
79 UINT i;\r
80 static FILINFO fno;\r
53668523
L
81\r
82\r
7b78a5a2 83 res = f_opendir(&amp;dir, path); <span class="c">/* ディレクトリを開く */</span>\r
53668523 84 if (res == FR_OK) {\r
53668523 85 for (;;) {\r
7b78a5a2
L
86 res = f_readdir(&amp;dir, &amp;fno); <span class="c">/* ディレクトリ項目を1個読み出す */</span>\r
87 if (res != FR_OK || fno.fname[0] == 0) break; <span class="c">/* エラーまたは項目無しのときは抜ける */</span>\r
7b78a5a2 88 if (fno.fattrib &amp; AM_DIR) { <span class="c">/* ディレクトリ */</span>\r
70702af1
L
89 i = strlen(path);\r
90 sprintf(&amp;path[i], "/%s", fno.fname);\r
91 res = scan_files(path); <span class="c">/* 一つ下へ */</span>\r
7b78a5a2 92 if (res != FR_OK) break;\r
70702af1 93 path[i] = 0;\r
7b78a5a2 94 } else { <span class="c">/* ファイル */</span>\r
70702af1 95 printf("%s/%s\n", path, fno.fname);\r
53668523
L
96 }\r
97 }\r
70702af1
L
98 f_closedir(&amp;dir)\r
99 }\r
100\r
101 return res;\r
102}\r
103\r
104\r
105int main (void)\r
106{\r
107 FRESULT res;\r
108\r
109\r
110 res = f_mount(&amp;fs, "", 1);\r
111 if (res == FR_OK) {\r
112 strcpy(buff, "/");\r
113 res = scan_files(buff);\r
53668523
L
114 }\r
115\r
116 return res;\r
117}\r
118</pre>\r
119</div>\r
120\r
121\r
122<div class="para ref">\r
7b78a5a2 123<h4>参照</h4>\r
53668523
L
124<p><tt><a href="opendir.html">f_opendir</a>, <a href="closedir.html">f_closedir</a>, <a href="stat.html">f_stat</a>, <a href="sfileinfo.html">FILINFO</a>, <a href="sdir.html">DIR</a></tt></p>\r
125</div>\r
126\r
7b78a5a2 127<p class="foot"><a href="../00index_j.html">戻る</a></p>\r
53668523
L
128</body>\r
129</html>\r