Windows下使用FindFirstFile和FindNextFile列举目录中的文件

本文介绍了如何在Windows环境下利用FindFirstFile和FindNextFile两个API函数遍历并列举指定目录下的所有文件,特别是通过修改参数实现特定后缀文件的搜索。提供了一个简单的示例代码帮助理解。
摘要由CSDN通过智能技术生成

在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行

要在 Windows 上实现用 C 语言显示指定目录下的目录文件,可以使用 Windows API 函数来实现。具体步骤如下: 1. 使用 `FindFirstFile()` 函数查找指定目录下的第一个文件或子目录。 2. 使用 `FindNextFile()` 函数查找下一个文件或子目录,直到没有文件或子目录为止。 3. 对于每个找到的文件或子目录,可以使用 `FindFirstFile()` 和 `FindNextFile()` 函数返回的 `WIN32_FIND_DATA` 结构体的信息来获取文件名、文件大小、创建时间等信息。 4. 使用 `printf()` 函数将文件名和相关信息输出到控制台。 以下是示例代码: ```c #include <stdio.h> #include <windows.h> int main() { WIN32_FIND_DATA FindFileData; HANDLE hFind; char directory[MAX_PATH]; printf("Please input the directory path: "); scanf("%s", directory); strcat(directory, "\\*.*"); hFind = FindFirstFile(directory, &FindFileData); if (hFind == INVALID_HANDLE_VALUE) { printf("Failed to find files in the directory!\n"); return 1; } do { if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { printf("%s [directory]\n", FindFileData.cFileName); } else { printf("%s [file] %d bytes\n", FindFileData.cFileName, FindFileData.nFileSizeLow); } } while (FindNextFile(hFind, &FindFileData)); FindClose(hFind); return 0; } ``` 该代码通过用户输入指定目录的路径,然后使用 `FindFirstFile()` 函数查找该目录下的所有文件和子目录,并使用 `FindNextFile()` 函数遍历所有文件和子目录,最后使用 `printf()` 函数将文件名和相关信息输出到控制台。可以根据需要对输出的信息进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值