f_readdir

ディレクトリ項目を読み出します

FRESULT f_readdir (
  DIR* DirObject,    // ディレクトリブジェクト構造体へのポインタ
  FILINFO* FileInfo  // ファイル情報構造体へのポインタ
);

パラメータ

DirObject
初期化済みのディレクトリオブジェクト構造体へのポインタを指定します。
FileInfo
読み出したディレクトリ項目を格納するファイル情報構造体へのポインタを指定します。

戻り値

FR_OK (0)
正常終了。
FR_NOT_READY
メディアがセットされていないなど、ディスクドライブが動作不能状態。
FR_RW_ERROR
ディスクアクセスでエラーが発生した。
FR_NOT_ENABLED
FatFsモジュールが停止状態。

解説

ディレクトリ項目を順次読み出します。この関数を繰り返し実行することによりディレクトリの全ての項目を読み出すことができます。全ての項目を読み出し、読み出す項目がもう無いときは、f_name[]メンバにヌル文字列が返されます。得られるファイル情報の詳細については FILINFO構造体を参照してください。ミニマム構成ではこの関数はサポートされません。

使用例

void scan_files (char* path)
{
    FILINFO finfo;
    DIR dirs;
    int i;

    if (f_opendir(&dirs, path) == FR_OK) {
        i = strlen(path);
        while ((f_readdir(&dirs, &finfo) == FR_OK) && finfo.f_name[0]) {
            if (finfo.f_attrib & AM_DIR) {
                sprintf(path+i, "/%s", &finfo.f_name[0]);
                scan_files(path);
                *(path+i) = '\0';
            } else {
                printf("%s/%s\n", path, &finfo.f_name[0]);
            }
        }
    }
}

参照

f_opendir, f_stat, FILINFO, DIR

戻る