プログラミングのメモ帳(C/C++/HSP)

日々のプログラミングで気づいた点や小技集を紹介します。(Windows 10/XP/Vista、VC2017、HSP)

ファイル名の検索

2007年09月13日 16時19分23秒 | ファイル関連

ファイルやフォルダ名を検索するには次の関数群を使います。(戻る)

  1. 最初のファイルを検索(FindFirstFile)
  2. 続きのファイルを検索(FindNextFile)
  3. ファイル検索を閉じる(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 メンバにファイルやフォルダ名がセットされています。

関連記事



コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« ファイルタイプの取得 | トップ | ファイル名の再帰検索 »
最新の画像もっと見る

コメントを投稿

ファイル関連」カテゴリの最新記事