C/C++遍历文件夹下所有文件或文件夹名称(使用Windows API)


前言

在项目开发中,经常需要去遍历某一个文件夹下的一些资源文件。为了避免重复造轮子,刚好在此记录一下。

实现思路

1、给出一个文件夹名称
2、获取文件句柄
3、过滤掉...(上一级和当前目录)
4、通过获取__finddata64_t 结构体的attrib 属性即可识别文件夹、文件等

//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//
// Macros
//
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// File attribute constants for the _findfirst() family of functions
#define _A_NORMAL 0x00 // Normal file - No read/write restrictions
#define _A_RDONLY 0x01 // Read only file
#define _A_HIDDEN 0x02 // Hidden file
#define _A_SYSTEM 0x04 // System file
#define _A_SUBDIR 0x10 // Subdirectory
#define _A_ARCH   0x20 // Archive file

源代码

当你的开环境为32位时需要将__finddata64_t_findfirst64_findnext64三个改为_finddata32_t_findfirst_findnext

    std::string path = "./tset/"+ '*';
    __finddata64_t fileInfo;
    intptr_t hFile = _findfirst64(path.c_str(), &fileInfo);
    if(-1 != hFile)
    {
        do
        {
            if(_A_SUBDIR == fileInfo.attrib && 0 != strcmp(fileInfo.name, ".") && 0 != strcmp(fileInfo.name, ".."))
            {
                qDebug() << QString::fromStdString(fileInfo.name);
            }
        }while(0 == _findnext64(hFile, &fileInfo));
    }

相关文章
分布式各系统时间统一程序
C/C++中常用必会的专业单词(持续更新 200+)
C/C++使用Windows的API实现共享内存以及同步
C语言练手题(52个小练习)
深入了解C++中各种不同意义的new和delete
C++使用TinyXml(开源库)读取*.XMl文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林夕07

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值