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

2023-11-14


前言

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

实现思路

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文件

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 如何向 UWP 项目添加 .NET dll 引用?

    我有几个适用于 NETv4 x 的 NET dll 项目 我将版本更改为 4 6 1 并重新构建 没有出现问题 当我尝试从 UWP 项目向它们添加引用时 出现错误 项目的目标是 NETCore 而文件引用的目标是 NET框架 这不是受支持的
  • 如何调试参数化 SQL 查询

    我使用 C 连接到数据库 然后使用 Ad hoc SQL 来获取数据 这个简单的 SQL 查询非常方便调试 因为我可以记录 SQL 查询字符串 如果我使用参数化 SQL 查询命令 有没有办法记录 sql 查询字符串以进行调试 我想就是这样的
  • 身份未映射异常

    System Security Principal IdentityNotMappedException 无法转换部分或全部身份引用 该错误仅在应用程序注册后出现一次 当 SecurityIdentifier 无法映射时 例如 返回 Ide
  • Windows:如何获取所有可见窗口的列表?

    无论如何都要使用相关技术重新标记 我不知道它们是什么 稍后我可能会提出更详细的问题 关于具体细节 但现在我正在尝试掌握 大局 我正在寻找一种方法来枚举 Windows 上的 真实可见窗口 我所说的 真正可见的窗口 就是指 用户所说的 窗口
  • 如何避免选择项目时 winforms 树视图图标发生变化

    我正在一个小型 C Winforms 应用程序中尝试树视图 我已经以编程方式将 ImageList 分配给树视图 并且所有节点都很好地显示了它们的图标 but当我单击一个节点时 它的图标会发生变化 变为 ImageList 中的第一个图像
  • C中有const吗?

    这个问题可能很幼稚 但是 有没有constC 中的关键字 从哪个版本开始 之间有任何语义和 或句法差异吗const在 C 和 C 中 C 和 C 之间在语法上没有差异const关键字 除了一个相当晦涩的关键字 在 C 中 自 C99 起 您
  • 防止复制构造和返回值引用的分配

    如果我有一个函数返回对类实例的引用 但我无法控制其源 比如说list
  • C#:使用 System.Text 和 System.Text.RegularExpressions 之间的区别

    在 ASP NET C 应用程序中 我注意到为了使用 Regex 和 StringBuilder 我必须将两者都放在 using System Text using System Text RegularExpressions 从简单的角度
  • 如何在不使用reinterpret_cast的情况下使用dlsym()加载函数?

    我正在尝试使用 clang tidy 来强制执行 C 核心指南 虽然它确实有很多有效点 但有一件事我无法真正解决 dlsym 返回一个void 我需要以某种方式将其转换为正确的函数指针 为此 我使用reinterpret cast 由于指南
  • for 循环 - 没有效果的语句

    由于某种原因 我收到错误 statement with no effect关于这个声明 for j idx j lt iter j increment printf from loop idx i int idx punc ctxt j 你
  • 在生产者-消费者情况下使用条件变量

    我正在尝试了解条件变量以及如何在生产者 消费者情况下使用它 我有一个队列 其中一个线程将数字推入队列 而另一个线程从队列中弹出数字 当生产线程放置一些数据时 我想使用条件变量向消费线程发出信号 问题是有时 或大多数时候 它只将最多两个项目推
  • 抽象类和接口之间的区别[重复]

    这个问题在这里已经有答案了 可能的重复 接口与基类 https stackoverflow com questions 56867 interface vs base class 我不明白抽象类和接口之间的区别 我什么时候需要使用哪种字体
  • 适用于 Python 的 GitLab CI 共享 Windows 运行器

    我在 GitLab 中有一个 python 项目仓库 我看到 GitLab 共享了可用的测试版 Windows 运行程序 请参阅this https about gitlab com blog 2020 01 21 windows shar
  • 用 C# 编写的带有点击移动的 WPF 游戏

    我试图将标签网格移动到鼠标的位置 就像冒险游戏中的移动一样 理想情况下 我会在途中删除并重新绘制它们 但是 现在我只想弄清楚如何将 int 转换为厚度或 pointtoscreen 到目前为止我有 player XMove int Mous
  • 在 MVVM 中,可以在视图后面的代码中访问 ViewModel 吗?

    在 MVVM 模式中 是否可以接受甚至可以访问视图代码后面的 ViewModel 属性 我有一个可观察的集合 它填充在 ViewModel 中 我需要在视图中使用它来绑定到带有链接列表的无限滚动条 IE private LinkedList
  • 多个同名内存数据库

    关系到这个答案 https stackoverflow com a 48446491 596758 我试图通过设置让多个上下文工作UseInMemoryDatabase以同名 下面的测试失败 第二个上下文为空 我还需要做什么才能在内存数据库
  • 有没有办法让 VS2010 在我的方法中扩展或收缩 try 块?

    我的代码有很多 try catch finally 块 与我在 VS2010 中的方法不同 除了添加区域之外 我无法在开发时扩展或收缩这些区域来隐藏内容 try vm R vm Qu vm T vm D vm Fil vm Type vm
  • 从 C# 中的 .NET SecureString 读取单个字符?

    WPF 的PasswordBox 返回一个SecureString 它对窥探者隐藏密码 问题是你最终必须获得密码的值 而我在网上找到的建议都涉及将值复制到字符串中 这会让你回到窥探者的问题 IntPtr bstr Marshal Secur
  • 如何使复选框不可选择?

    我想知道你是怎么做的CheckBox在c 中无法选择 我认为这会是类似 SetSelectable false 之类的东西 但我似乎看不到该方法 I found CanSelect但这似乎是只读属性 您可以设置自动检查 http msdn
  • 当我读取 500MB FileStream 时出现 OutOfMemoryException

    我使用 Filestream 读取大文件 gt 500 MB 但出现 OutOfMemoryException 任何有关它的解决方案 我的代码是 using var fs3 new FileStream filePath2 FileMode

随机推荐

  • input输入框在苹果手机上边框有阴影

    问题描述 h5移动端页面 input输入框在苹果手机上显示有兼容性问题 边框上方出现阴影 通过统一设置border 也不能消除 如下图所示 解决方案 添加如下样式即可解决 input outline none webkit appearan
  • 计算机网络之(7):TCP流量控制、拥塞控制 + 网络层

    文章目录 TCP 流量控制 Go back N Selective Repeat Go back N v s Selective Repeat 流量控制中的问题 方法 1 接收方主动 方法2 发送方主动 TCP 拥塞控制 拥塞控制和流量控制
  • 《Android网络请求篇》MyHttpUtils一个非常好用的异步网络请求框架

    Android网络请求篇 MyHttpUtils一个非常好用的异步网络请求框架 最新版介绍看这里 gt 这是一个使用策略模式和构建模式设计的网络请求框架 去看看吧 倾力之作 android轻量级网络请求框架MyHttputils2 1 6
  • 编程三角形面积公式_【面积系列专题】三角形面积公式之水平宽铅垂高

    点击上方蓝字关注我们 面积系列专题 三角形面积公式之水平宽铅垂高 TSQ中学数学微信 TSQmaths 一 本文说明 三角形的面积公式计算较多 而在平面直角坐标系中的三边都不与坐标轴平行的三角形面积一般会采用割补形来求解 但有时采用水平宽铅
  • MATLAB泰勒展开

    MATLAB函数 taylor 题目 对y exp x 进行4阶泰勒展开 并验证 函数调用格式 taylor fcn x x0 Order 6 对函数fcn在点x0处 进行6阶泰勒展开 MATLAB代码 clc clear all clos
  • 三菱plc指令详细解析

    一 顺控指令 1 触点指令 00 LD 逻辑操作开始 01 LDI 逻辑非操作开始 02 AND 逻辑乘 03 ANI 逻辑乘非 04 OR 逻辑加 05 ORI 逻辑加非 2 连接指令 06 ANB AND逻辑块与 07 ORB OR逻辑
  • 一张图正则表达式

    一张图正则表达式
  • VW ware安装Ubuntu虚拟机及环境配置

    实验前准备 VMware 官网下载 Ubuntu XXX iso 文件过大阿里云镜像下载 熟悉那种Linux内核就下载那种 这个不会影响集群的搭建 https pan baidu com s 1tFvCA4PmNC2tZN7Yp2BkZQ
  • vue组件销毁重置详解

    v if方式 key方式 destroy v if方式
  • 在Windows下使用MingGW[GCC+OpenMP]和CodeBlocks开发多核应用基本环境配置

    转自 http blog csdn net danny xcz article details 3332251 从06年开始 多核开发已经越来越多的成为所有应用设计必须考虑的问题 我使用MingGW CodeBlocks来测试OpenMP多
  • 浪涌保护电路设计

    浪涌保护电路设计 一 什么是浪涌 二 浪涌的产生 2 1浪涌的产生 2 2浪涌的传输介质 2 3IEC定义的浪涌标准 三 浪涌保护电路 一 什么是浪涌 浪涌是一种瞬变干扰 在某种特定条件下由电网造成的瞬间电压超出额定电压的范围 通常这个瞬变
  • Docker(三) 创建Docker镜像

    一 在Docker中拉取最基本的Ubuntu系统镜像 搜索Ubuntu镜像 Explore Docker s Container Image Repository Docker Hub 下载镜像 docker pull ubuntu 22
  • PS解决“无法使用快速选择,因为没有足够内存(RAM)”

    PS解决 无法使用快速选择 因为没有足够内存 RAM win R打开命令行 在输入框输入 regedit 点击确定 找到目录HKEY CURRENT USER Software Adobe Photoshop 点击对应版本Photoshop
  • 万维网服务器协议提供web,万维网的HTTP和FTP协议.doc

    万维网的HTTP和FTP协议 doc 万维网的HTTP和FTP协议 摘 要 20世纪40年代以来 人们就梦想能拥有一个世界性的信息库 在这个信息库中 信息不仅能被全球的人们存取 而且能轻松地链接到其他地方的信息 使用户可以方便快捷地获得重要
  • PyQt5 自动计算阵列矩阵

    说实话 其实我当时听懂了 真正写代码的时候越写越懵逼 所以还是记录下来吧 另外有兴趣了解的同学还是看老师的视频解说比较好 想学PyQT的同学强烈建议看这个老师的视频 由浅入深 从PyQT最基本的开始教学 非常棒 bilibili https
  • 第五章:平衡二叉树

    系列文章目录 文章目录 系列文章目录 前言 1 平衡二叉树的介绍 1 1 AVL树的概念 1 2 AVL树的性质 2 平衡二叉树的插入 2 1 平衡二叉树的插入步骤 2 2 平衡二叉树的旋转 2 2 1 左单旋 2 2 2 右单旋 2 2
  • /etc/vsftpd.conf详解

    匿名权限控制 anonymous enable YES 是否启用匿名用户no anon password YES 匿名用户login时不询问口令下面这四个主要语句控制这文件和文件夹的上传 下载 创建 删除和重命名 anon upload e
  • 4399笔试题

    1 冒泡排序的时间复杂度 2 有无序数字5000个 用什么算法能快速的找出最大的前50个数字 3 比如有10个台阶 一直青蛙一次只能跳一个或者二个台阶 问青蛙从第一个台阶开始跳最多有几种跳法 4 从区间 2 2 中随意取出二个实数 它们的和
  • 解析顶点着色器和片元着色器

    管线 也称渲染管线 因为 OpenGL ES在渲染处理过程中会顺序执行一系列操作 这一系列相关的处理阶段就被称为OpenGL ES 渲染管线 OpenGL ES 渲染过程就如流水线作业一样 这样的实现极大地提高了渲染的效率 如图就是 Ope
  • C/C++遍历文件夹下所有文件或文件夹名称(使用Windows API)

    目录 前言 实现思路 源代码 前言 在项目开发中 经常需要去遍历某一个文件夹下的一些资源文件 为了避免重复造轮子 刚好在此记录一下 实现思路 1 给出一个文件夹名称 2 获取文件句柄 3 过滤掉 和 上一级和当前目录 4 通过获取 find