1. 程式人生 > >Windows下使用FindFirstFile和FindNextFile列舉目錄中的檔案

Windows下使用FindFirstFile和FindNextFile列舉目錄中的檔案

在Windows下程式設計經常需要列舉出某個目錄下的所有檔案,以便對該目錄下的檔案進行批量處理,這種情形下,我們可以使用windows api提供的FindFirstFile和FindNextFile。

MSDN對這兩個函式的文件:
http://msdn.microsoft.com/zh-cn/library/aa914391(en-us).aspx
http://msdn.microsoft.com/zh-cn/library/aa364428.aspx

簡單的示例程式碼:

#include <windows.h>
#include <tchar.h>
#include <stdio.h>

int main(int argc, char *argv[])
{
    WIN32_FIND_DATA FindFileData;
    HANDLE hFind;

    hFind = FindFirstFile("*", &FindFileData);
    if (hFind == INVALID_HANDLE_VALUE) 
    {
        printf ("FindFirstFile failed (%d)\n", GetLastError());
        return -2;
    }
    
    printf("Targets:\n");
    do
    { 
        printf ("\t%s\n", FindFileData.cFileName);
    } while (FindNextFile(hFind, &FindFileData));

    return 0;
}

注意要點:

@1.第10行
我們可以根據需要,修改FindFirstFile的第1個引數,來獲取對應字尾名的函式。如FindFirstFile("*.jpg", &FindFileData)可以查詢字尾名為JPG的檔案。

@2.

Targets:
        .
        ..
        90289982666714068085
        CameraTest
        CameraTest.zip
在列出來的檔案中,可能會包含.和..兩個檔案,這兩個並不是真正在這個目錄中的檔案,當使用檔案路徑進行操作時:.表示當前目錄,..表示上一級目錄。