ディレクトリ内のオブジェクトの検索を開始します。
FRESULT f_findfirst ( DIR* dp, /* [OUT] ディレクトリ オブジェクト構造体へのポインタ */ FILINFO* fno, /* [OUT] ファイル情報構造体へのポインタ */ const TCHAR* path, /* [IN] ディレクトリ名へのポインタ */ const TCHAR* pattern /* [IN] マッチ パターン文字列へのポインタ */ );
FR_OK, FR_DISK_ERR, FR_INT_ERR, FR_NOT_READY, FR_NO_PATH, FR_INVALID_NAME, FR_INVALID_OBJECT, FR_INVALID_DRIVE, FR_NOT_ENABLED, FR_NO_FILESYSTEM, FR_TIMEOUT, FR_NOT_ENOUGH_CORE, FR_TOO_MANY_OPEN_FILES
pathで指定されるディレクトリを開き、そのディレクトリ内の項目の検索を開始します。正常終了すると、ディレクトリ オブジェクト構造体が作成され、最初に検索名文字列に名前がマッチした項目の情報がfnoの指定するファイル情報構造体にストアされます。名前のマッチする項目が見つからなかった場合は、fno->fname[]にヌル文字列が返されます。ファイル情報構造体の使い方については、f_readdir関数を参照してください。
マッチ パターン文字列は、ワイルドカード文字(?と*)を含むことができます。?は任意の1文字に、*は0文字以上の任意の文字列にマッチします。LFN構成では、SFNとLFN(あれば)の両方に対してテストを行います。現リビジョンではパターン マッチングにおいて次の点で標準システムとは異なる動作となります。
/* ディレクトリ内のオブジェクトの検索と表示 */ void find_image (void) { FRESULT fr; /* 戻り値 */ DIR dj; /* ディレクトリ オブジェクト */ FILINFO fno; /* ファイル情報構造体 */ #if _USE_LFN char lfn[_MAX_LFN + 1]; fno.lfname = lfn; fno.lfsize = _MAX_LFN + 1; #endif fr = f_findfirst(&dj, &fno, "", "dsc*.jpg"); /* "dsc"で始まるJPEGファイルを検索 */ while (fr == FR_OK && fno.fname[0]) { /* 見つかる間繰り返し */ #if _USE_LFN printf("%s %s\n", fno.fname, fno.lfname);/* 見つけた項目の名前を表示 */ #else printf("%s\n", fno.fname); #endif fr = f_findnext(&dj, &fno); /* 次を検索 */ } f_closedir(&dj); }