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
在列出来的文件中,可能会包含.和..两个文件,这两个并不是真正在这个目录中的文件,当使用文件路径进行操作时:.表示当前目录,..表示上一级目录。

你可能感兴趣的:(Windows下使用FindFirstFile和FindNextFile列举目录中的文件)