ファイルやフォルダ名を検索するには次の関数群を使います。(戻る)
- 最初のファイルを検索(FindFirstFile)
- 続きのファイルを検索(FindNextFile)
- ファイル検索を閉じる(FindClose)
プロトタイプ宣言
HANDLE FindFirstFile( LPCTSTR lpFileName, // ファイル名 LPWIN32_FIND_DATA lpFindFileData // データバッファ ); BOOL FindNextFile( HANDLE hFindFile, // 検索ハンドル LPWIN32_FIND_DATA lpFindFileData // データバッファ ); BOOL FindClose( HANDLE hFindFile // 検索ハンドル );
構造体
typedef struct _WIN32_FIND_DATA { DWORD dwFileAttributes; // 属性 FILETIME ftCreationTime; // 作成日時 FILETIME ftLastAccessTime; // 最終アクセス日時 FILETIME ftLastWriteTime; // 最終更新日時 DWORD nFileSizeHigh; // サイズ(上位ワード) DWORD nFileSizeLow; // サイズ(下位ワード) DWORD dwReserved0; // 予約領域 DWORD dwReserved1; // 予約領域 TCHAR cFileName[ MAX_PATH ]; // ファイル名 TCHAR cAlternateFileName[ 14 ]; // 8.3形式のファイル名 } WIN32_FIND_DATA, *PWIN32_FIND_DATA;
サンプル
// カレント・ディレクトリのファイル検索 VOID findDirectory( VOID ) { WIN32_FIND_DATA fdFile; HANDLE hFind; if ( (hFind = FindFirstFile(TEXT("*.*"),&fdFile)) != INVALID_HANDLE_VALUE ){ do { if ( fdFile.cFileName[0] != TEXT('.') ){ if ( fdFile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ){ /* fdFile.cFileNameにフォルダ名 */ } else{ /* fdFile.cFileNameにファイル名 */ } } } while ( FindNextFile(hFind,&fdFile) ); FindClose( hFind ); } }
- 構造体の fdFile.cFileName メンバにファイルやフォルダ名がセットされています。
関連記事
- ファイル名の検索
- ファイル名の再帰検索
※コメント投稿者のブログIDはブログ作成者のみに通知されます