]> cloudbase.mooo.com Git - z180-stamp.git/blame - fatfs/doc/ja/readdir.html
Merge tag 'fatfs-0.10c'
[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
7b78a5a2 29<dd>有効なディレクトリ オブジェクト構造体へのポインタを指定します。</dd>\r
53668523 30<dt>fno</dt>\r
7b78a5a2 31<dd>読み出したディレクトリ項目を格納するファイル情報構造体へのポインタを指定します。</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
42<a href="rc.html#nr">FR_NOT_READY</a>,\r
43<a href="rc.html#io">FR_INVALID_OBJECT</a>,\r
44<a href="rc.html#tm">FR_TIMEOUT</a>,\r
45<a href="rc.html#nc">FR_NOT_ENOUGH_CORE</a>\r
46</p>\r
47</div>\r
48\r
49\r
50<div class="para desc">\r
7b78a5a2
L
51<h4>解説</h4>\r
52<p>ディレクトリの項目(ファイルとディレクトリ)を順次読み出します。この関数を繰り返し実行することによりそのディレクトリの全ての項目を読み出すことができます。得られるファイル情報の詳細については <tt>FILINFO</tt>構造体を参照してください。全ての項目が読み出され、読み出す項目がもう無いときは、<tt>fname[]</tt>メンバにヌル文字列が返されます。<tt class="arg">fno</tt>にヌル ポインタを指定すると、そのディレクトリのリード インデックスを先頭に巻き戻します。また、この関数は次に示すように関連する構成オプションにより動作が変わります。</p>\r
53<p>ドット エントリ("."、"..")は、相対パスが有効なとき(<tt>_FS_RPATH &gt;= 1</tt>)にのみ出力に現れます。</p>\r
54<p>LFN機能が有効な時は、この関数の呼び出しに先立って<tt>FILINFO</tt>構造体の<tt>lfname</tt>と<tt>lfsize</tt>が有効な値で初期化されていなければなりません。<tt>lfname</tt>はLFNを格納するバッファで、<tt>lfsize</tt>はそのバッファの要素数です。LFNを読み出す必要がないときは、<tt>lfname</tt>にヌル ポインタをセットしてください。次の条件に一つでも該当する場合は、LFN格納バッファにヌル文字列が返されます。</p>\r
53668523 55<ul>\r
7b78a5a2
L
56<li>ディレクトリ項目にLFN情報が存在しない。</li>\r
57<li>LFNの長さに対してLFN格納バッファまたはLFN操作バッファのサイズが不十分。</li>\r
58<li>LFNに現在のOEMコードに存在しない文字が含まれている。(非Unicode構成のとき)</li>\r
53668523 59</ul>\r
7b78a5a2 60<p>また、ディレクトリ項目にLFN情報が存在しない場合は、<tt>fname[]</tt>に英小文字が含まれる場合があります。</p>\r
53668523
L
61</div>\r
62\r
63\r
64<div class="para comp">\r
7b78a5a2
L
65<h4>対応情報</h4>\r
66<p><tt>_FS_MINIMIZE &lt;= 1</tt>のときに使用可能です。</p>\r
53668523
L
67</div>\r
68\r
69\r
70<div class="para use">\r
7b78a5a2 71<h4>使用例</h4>\r
53668523
L
72<pre>\r
73FRESULT scan_files (\r
7b78a5a2 74 char* path <span class="c">/* 開始ノード (ワークエリアとしても使用) */</span>\r
53668523
L
75)\r
76{\r
77 FRESULT res;\r
78 FILINFO fno;\r
79 DIR dir;\r
80 int i;\r
7b78a5a2 81 char *fn; <span class="c">/* 非Unicode構成を想定 */</span>\r
53668523
L
82<span class="k">#if</span> _USE_LFN\r
83 static char lfn[_MAX_LFN + 1];\r
84 fno.lfname = lfn;\r
85 fno.lfsize = sizeof lfn;\r
86<span class="k">#endif</span>\r
87\r
88\r
7b78a5a2 89 res = f_opendir(&amp;dir, path); <span class="c">/* ディレクトリを開く */</span>\r
53668523
L
90 if (res == FR_OK) {\r
91 i = strlen(path);\r
92 for (;;) {\r
7b78a5a2
L
93 res = f_readdir(&amp;dir, &amp;fno); <span class="c">/* ディレクトリ項目を1個読み出す */</span>\r
94 if (res != FR_OK || fno.fname[0] == 0) break; <span class="c">/* エラーまたは項目無しのときは抜ける */</span>\r
95 if (fno.fname[0] == '.') continue; <span class="c">/* ドットエントリは無視 */</span>\r
53668523
L
96<span class="k">#if</span> _USE_LFN\r
97 fn = *fno.lfname ? fno.lfname : fno.fname;\r
98<span class="k">#else</span>\r
99 fn = fno.fname;\r
100<span class="k">#endif</span>\r
7b78a5a2 101 if (fno.fattrib &amp; AM_DIR) { <span class="c">/* ディレクトリ */</span>\r
53668523
L
102 sprintf(&amp;path[i], "/%s", fn);\r
103 res = scan_files(path);\r
53668523 104 path[i] = 0;\r
7b78a5a2
L
105 if (res != FR_OK) break;\r
106 } else { <span class="c">/* ファイル */</span>\r
53668523
L
107 printf("%s/%s\n", path, fn);\r
108 }\r
109 }\r
110 f_closedir(&amp;dir);\r
111 }\r
112\r
113 return res;\r
114}\r
115</pre>\r
116</div>\r
117\r
118\r
119<div class="para ref">\r
7b78a5a2 120<h4>参照</h4>\r
53668523
L
121<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
122</div>\r
123\r
7b78a5a2 124<p class="foot"><a href="../00index_j.html">戻る</a></p>\r
53668523
L
125</body>\r
126</html>\r