【详细】遍历Windows文件

文件遍历

摘要
Windows 文件遍历和进程遍历是非常类似的,如果你不了解进程遍历建议看看我之前的两篇文章 遍历系统进程 和 遍历系统进程模块!遍历文件你需要知道WIN32_FIND_DATA这个结构体以及GetCurrentDirectory FindFirstFile FindNextFile FindClose这几个 API

思路
思路我就不赘述了,代码一看就懂,主要是先获取文件夹的路径,然后用strcat等函数拼接想要遍历的文件名,然后使用FindFirstFileFindNextFile遍历文件即可。注意*.* *.dll h???.*等格式化字符类似正则表达式,用于寻找指定的文件,dwFileAttributes关键字是文件的属性信息

完整代码

#include 
#include 

int main(int args, char *argv[])
{
    HANDLE hFile;
    char path[MAX_PATH];
    char filepath[MAX_PATH];
    WIN32_FIND_DATA fileData;
    GetCurrentDirectory(MAX_PATH, path);
    strcpy(filepath, path);
    strcat(filepath, "\\*.*");
    hFile = FindFirstFile(filepath, &fileData);
    if (hFile != INVALID_HANDLE_VALUE)
    {
        do
        {
            printf("%s: ", fileData.cFileName);
            if (fileData.dwFileAttributes & FILE_ATTRIBUTE_ARCHIVE)
            {
                printf(" ");
            }
            if (fileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
            {
                printf(" ");
            }
            if (fileData.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN)
            {
                printf(" ");
            }
            if (fileData.dwFileAttributes & FILE_ATTRIBUTE_READONLY)
            {
                printf(" ");
            }
            if (fileData.dwFileAttributes & FILE_ATTRIBUTE_SYSTEM)
            {
                printf(" ");
            }
            if (fileData.dwFileAttributes & FILE_ATTRIBUTE_TEMPORARY)
            {
                printf(" ");
            }
            printf("\n");
        } while (FindNextFile(hFile, &fileData));
    }
    FindClose(hFile);
    system("pause");
    return 0;
}

编译命令gcc file1.c -o file1

运行截图

【详细】遍历Windows文件_第1张图片

END

你可能感兴趣的:(【详细】遍历Windows文件)