当前位置: 首页 > java >正文

C++批量读取指定后缀文件

目录

  • 核心功能说明
  • 批量读取代码

在这里插入图片描述

博客长期更新,本文最新更新时间为:2025年6月14日。

核心功能说明

  1. 文件遍历机制

    • _findfirst():启动文件搜索,返回首个匹配文件句柄
    • _findnext():获取下一个匹配文件
    • _findclose():释放搜索资源
  2. 关键数据结构

    struct _finddata_t {unsigned attrib;     // 文件属性(普通/目录/隐藏等)time_t time_create;  // 创建时间time_t time_access;  // 访问时间time_t time_write;   // 修改时间_fsize_t size;       // 文件大小char name[_MAX_FNAME]; // 文件名
    };
    
  3. 文件属性常量

    _A_NORMAL  // 普通文件 (0x00000)
    _A_RDONLY  // 只读文件 (0x00001)
    _A_HIDDEN  // 隐藏文件 (0x00002)
    _A_SYSTEM  // 系统文件 (0x00004)
    _A_SUBDIR  // 子目录 (0x00010)
    _A_ARCH    // 存档文件 (0x00020)
    

批量读取代码

#include <iostream>
#include <string>
#include <vector>
#include <io.h> // Windows文件操作头文件
using namespace std;vector<string> getFilesByExtension(const string& folder, const string& ext) {vector<string> fileList;_finddata_t fileInfo;// 构造搜索模式:目录 + 通配符 + 后缀string searchPattern = folder + "\\*" + ext;// 开始搜索long handle = _findfirst(searchPattern.c_str(), &fileInfo);if (handle == -1L) {cerr << "未找到文件: " << searchPattern << endl;return fileList;}do {// 跳过"."和".."目录if (strcmp(fileInfo.name, ".") == 0 || strcmp(fileInfo.name, "..") == 0) continue;// 排除子目录(只保留文件)if (!(fileInfo.attrib & _A_SUBDIR)) {string fullPath = folder + "\\" + fileInfo.name;fileList.push_back(fullPath);}} while (_findnext(handle, &fileInfo) == 0); // 找到下一个文件_findclose(handle); // 关闭搜索句柄return fileList;
}int main() {string folder = "C:\\MyDocs";string extension = ".txt"; // 可改为.pdf/.jpg等vector<string> files = getFilesByExtension(folder, extension);cout << "找到 " << files.size() << " 个" << extension << "文件:\n";for (const string& path : files) {cout << "• " << path << endl;}return 0;
}
http://www.xdnf.cn/news/14246.html

相关文章:

  • 【C++进阶篇】哈希的应用(位图)
  • 深度解析Vue.js组件开发与实战案例
  • 商用密码基础知识介绍(上)
  • python与java的区别
  • 深入解析ReentrantReadWriteLock读写锁机制
  • 【python深度学习】Day53 对抗生成网络
  • 人工智能学习23-BP-图像编码
  • c++编译第三方项目报错# pragma warning( disable: 4273)
  • HTML5白云飘飘动态效果教程
  • 华为云Flexus+DeepSeek征文 | 基于华为云Dify-LLM应用开发平台构建写作助手
  • 达梦分布式集群DPC_DPC的执行计划新增操作符详解_yxy
  • 区间合并:牛奶
  • 【慢摹】TRL训练器细节详解(SFT/PPO/DPO/GRPO)
  • 自用方案总结
  • 如何在 Elementary OS 上安装 Snap Store
  • Thymeleaf功能标签th:block
  • java面试总结-20250605
  • 5G核心网Non-IP数据报文转发机制:Unstructured会话与协议栈解析
  • 抖音 pc + 翻页
  • C#最佳实践:推荐使用泛型而非装箱、拆箱
  • 60、数据访问-数据库场景的自动配置分析与整合测试
  • c++26新功能—契约编程
  • 单测时如何让 mock 的接口在长链路调用时一直生效
  • 从STM32到NXP:GPIO就像装修房子,多了个“智能开关”
  • 基于 SpringBoot+Servlet+JSP 的医院医保管理系统的设计与实现,论文7000字,可根据实际情况调整
  • ES+索引库文档操作
  • [CVPR 2025] DiCo:动态协作网络助力半监督3D血管分割新突破
  • AI Agent实战 - LangChain+Playwright构建火车票查询Agent
  • 人工智能学习28-BP过拟合
  • [k8s]--exec探针详细解析