1 遍历所有的,包括文件夹套文件夹

#include<iostream>
#include<string>
#include<io.h>
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std; void fileSearch(string path)
{
long hFile = 0;
/*
_finddata_t 存储文件各种信息的结构体,<io.h>;
*/
struct _finddata_t fileInfo;
string pathName;
/*
\\* 表示符合的所有文件;
没有找到即文件夹为空,退出;
assign 表示把 pathName清空并置为path;
append 表示在末尾加上字符串;
c_str 返回一个const char* 的临时指针;
_findfirst
搜索与指定的文件名称匹配的第一个实例,若成功则返回第一个实例的句柄,否则返回-1L;
函数原型:long _findfirst( char *filespec, struct _finddata_t *fileinfo );
*/
if ( ( hFile = _findfirst(pathName.assign(path).append("\\*").c_str(), &fileInfo) ) == -1)
return ; do {
cout << path+"\\"+fileInfo.name << endl;
/*
文件夹下有 . 和 .. 目录,不能进入搜索;
_A_SUBDIR 表示文件夹属性;
*/
if( strcmp(fileInfo.name,"..") && strcmp(fileInfo.name,".") && fileInfo.attrib==_A_SUBDIR )
fileSearch(path+"\\"+fileInfo.name);
} while ( _findnext(hFile, &fileInfo) == 0 );
/*
_findnext 搜索与_findfirst函数提供的文件名称匹配的下一个实例,若成功则返回0,否则返回-1 ;
_findclose 结束查找;
*/
_findclose(hFile);
return ;
}
int main()
{
string path="E:\\Git";
fileSearch(path); system("pause");
return 0;
}

  

2 完整小例程

#include<iostream>
#include<io.h>
#include<vector>
#include<string> int get_files(std::string fileFolderPath, std::string fileExtension, std::vector<std::string>&file)
{
std::string fileFolder = fileFolderPath + "\\*" + fileExtension;
std::string fileName;
struct _finddata_t fileInfo;
long long findResult = _findfirst(fileFolder.c_str(), &fileInfo);
if (findResult == -1)
{
_findclose(findResult);
return 0;
}
bool flag = 0; do
{
fileName = fileFolderPath + "\\" + fileInfo.name;
if (fileInfo.attrib == _A_ARCH)
{
file.push_back(fileName);
}
} while (_findnext(findResult, &fileInfo) == 0); _findclose(findResult);
} void find_file(std::string fileFolderPath, std::string fileFolderExtension)
{ //所有xml数据
std::cout << "\n输出当前目录下的所有"<< fileFolderExtension <<"格式的文件" << std::endl;
std::vector<std::string> xml_files;
std::string fileExtension_xml = fileFolderExtension;
get_files(fileFolderPath, fileExtension_xml, xml_files); for (int i = 0; i < xml_files.size(); i++)
{
std::cout << xml_files[i] << std::endl;
} } int main()
{
//查询文件夹
std::string fileFolderPath = "F:\\dongdong\\外包\\4有可能\\体感交互\\代码\\4手部识别\\Project2"; find_file(fileFolderPath,".xml");// 查找xml类型
find_file(fileFolderPath, ""); // 查找所有类型 除了文件夹 system("pause");
return 0;
}

  

15 C++遍历某个文件夹下的文件的更多相关文章

  1. C#遍历文件夹下所有文件

    FolderForm.cs的代码如下: using System; using System.Collections.Generic; using System.Diagnostics; using ...

  2. python (9)统计文件夹下的所有文件夹数目、统计文件夹下所有文件数目、遍历文件夹下的文件

    命令:os 用到的:os.walk   os.listdir 写的爬虫爬的数据,但是又不知道进行到哪了,于是就写了个脚本来统计文件的个数 #统计 /home/dir/ 下的文件夹个数 import o ...

  3. PHP遍历文件夹下的文件和获取到input name的值

    <?php$dir = dirname(__FILE__); //要遍历的目录名字 ->当前文件所在的文件夹//$dir='D:\PHP\wamp\www\admin\hosts\admi ...

  4. java中File类应用:遍历文件夹下所有文件

    练习: 要求指定文件夹下的所有文件,包括子文件夹下的文件 代码: package 遍历文件夹所有文件; import java.io.File; public class Test { public ...

  5. opencv实现遍历文件夹下所有文件

    前言 最近需要将视频数据集中的每个视频进行分割,分割成等长的视频片段,前提是需要首先遍历数据集文件夹中的所有视频. 实现 1.了解opencv中的Directory类: 2.实现测试代码: 系统环境 ...

  6. c bash 代码遍历文件夹下所有文件

    用C代码.bash实现代码遍历文件夹下所有文件 递归方式实现如下: void listdir(char *path) { DIR *ptr_dir; struct dirent *dir_entry; ...

  7. PHP使用glob方法遍历文件夹下所有文件

    PHP使用glob方法遍历文件夹下所有文件 遍历文件夹下所有文件,一般可以使用opendir 与 readdir 方法来遍历.<pre><?php$path = dirname(__ ...

  8. 利用shell脚本或者php移动某个文件夹下的文件到各自的日期组成的目录下

    背景是这样的:网站一开始访问量比较小,大家就把所有的图片文件上传到一个目录下(比如是/data/images/).后来访问量大了,图片也多了,这样就影响读取效率.所以有个这样的需求,把这些个图片文件移 ...

  9. FILE文件删除操作(删除指定文件夹下所有文件和文件夹包括子文件夹下所有文件和文件夹),就是删除所有

    2018-11-05  19:42:08开始写 选择 删除 1.FileUtils.java类 import java.io.File;//导入包 import java.util.List;//导入 ...

  10. Android读取asserts和raw文件夹下的文件

    Android读取asserts和raw文件夹下的文件 经常需要用到读取“/res/raw”和"/asserts"文件夹下的文件,索性写成工具类方便以后使用. 一.raw文件夹下的 ...

随机推荐

  1. Best Cow Line <挑战程序设计竞赛> 习题 poj 3617

    P2870 [USACO07DEC]最佳牛线,黄金Best Cow Line, Goldpoj 3617 http://poj.org/problem?id=3617 题目描述FJ is about ...

  2. angularjs中使用锚点,angular路由导致锚点失效的两种解决方案

     壹 ❀ 引 公司新项目开发中,首页要做个楼层导航效果(如下图),要求能点击图标对应跳到楼层即可,因为不需要跳转过度动画,也要求最好别用JQ,想着原生js操作dom计算top的兼容性,想着用锚点实现算 ...

  3. PriorityBlockingQueue

    public class PriorityBlockingQueueTest { /** * 有优先级顺序的阻塞队列,底层实现是数组,无边界.默认是11. * 构造方法可以传入一个比较器,不传的话,默 ...

  4. ansible命令参数介绍

    -m:要执行的模块,默认为command -a:模块的参数 -u:ssh连接的用户名,默认用root,ansible.cfg中可以配置 -k:提示输入ssh登录密码.当使用密码验证的时候用 -s:su ...

  5. KiRaiseException函数逆向

    KiRaiseException函数是记录异常的最后一步,在这之后紧接着就调用KiDispatchException分发异常. 我们在逆向前,先看一下书中的介绍: 1. 概念认知: KiRaiseEx ...

  6. Eclipse导入SpringBoot项目pom.xml第一行报错Unknown error

    1.网上搜的都说是将SpringBoot2.1.5版本降级到SpringBoot2.1.4版本,感觉这治标不治本啊,以后想升级不是玩完了. 错误如下所示: 参考:https://ask.csdn.ne ...

  7. Z从壹开始前后端分离【 .NET Core2.2/3.0 +Vue2.0 】框架之九 || 依赖注入IoC学习 + AOP界面编程初探

    本文梯子 本文3.0版本文章 更新 代码已上传Github+Gitee,文末有地址 零.今天完成的绿色部分 一.依赖注入的理解和思考 二.常见的IoC框架有哪些 1.Autofac+原生 2.三种注入 ...

  8. python3 对list对象的增删改查

    class peoples: people_list =[] class people: name='' age=-1 def __init__(self,name,age): self.name = ...

  9. jsp表单数据添加到数据库

    先由表单提交数据到某验证页面:checkregister.jsp<form method="POST"name="form1" action=" ...

  10. js 时分秒转化为秒

    var time = '00:02:10'; var hour = time.split(':')[0]; var min = time.split(':')[1]; var sec = time.s ...