C++遍历文件夹下的所有文件
2016-11-03 15:08
513 查看
C++遍历文件夹下的所有文件
本人邮箱:sylvester0510@163.com,欢迎交流讨论,欢迎转载,转载请注明网址http://blog.csdn.net/u010128736/
一.使用_finddata_t
为了查找文件,我们使用struct _finddata_t { unsigned attrib; //文件属性 time_t time_create; //文件创建时间 time_t time_access; //文件上一次访问时间 time_t time_write; //文件上一次修改时间 _fsize_t size; //文件字节数 char name[_MAX_FNAME]; //文件名 };
(1)unsigned atrrib:
文件属性。文件属性是用位表示的,主要有以下一些:_A_ARCH(存档)、_A_HIDDEN(隐藏)、_A_NORMAL(正常)、_A_RDONLY(只读)、_A_SUBDIR(文件夹)、_A_SYSTEM(系统)。这些都是在(2)time_t time_create:
这里的time_t是一个变量类型,用来存储文件创建时间的就可以了。(3)time_t time_access:
文件最后一次被访问的时间。(4)time_t time_write:
文件最后一次被修改的时间。(5)_fsize_t size:
文件的大小。这里的_fsize_t应该可以相当于unsigned整型,表示文件的字节数。(6)char name[_MAX_FNAME]:
文件的文件名。这里的_MAX_FNAME是一个常量宏,它在二、_finddata_t的三个函数:
(1)_findfirst
//按FileName命名规则匹配当前目录第一个文件 _findfirst(_In_ const char * FileName, _Out_ struct _finddata64i32_t * _FindData);
_findfirst函数返回的是匹配到文件的句柄,很多文档将这个句柄的数据类型定为long,但有时会在_findnext的时候报错,如下图所示,就要将long类型改为intptr_t类型。遍历过程可以指定文件类型,这通过FileName的赋值来实现。
(2)_findnext
//按FileName命名规则匹配当前目录下一个文件 _findnext(_In_ intptr_t _FindHandle, _Out_ struct _finddata64i32_t * _FindData);
(3)_findclose
//关闭_findfirst返回的文件句柄 _findclose(_In_ intptr_t _FindHandle);
三、示例代码
#include <io.h> void getFiles(string path, vector<string>& files) { //文件句柄 intptr_t hFile = 0; //文件信息 struct _finddata_t fileinfo; string p; if ((hFile = _findfirst(p.assign(path).append("\\*").c_str(), &fileinfo)) != -1) { do { //如果是目录,迭代之 //如果不是,加入列表 if ((fileinfo.attrib & _A_SUBDIR)) { if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0) getFiles(p.assign(path).append("\\").append(fileinfo.name), files); } else { files.push_back(p.assign(path).append("\\").append(fileinfo.name)); } } while (_findnext(hFile, &fileinfo) == 0); _findclose(hFile); } } int main(int argc, char** argv) { string filePath = ".\\720PPcalib\\front"; vector<string> files; ////获取该路径下的所有文件 getFiles(filePath, files); char str[30]; int size = files.size(); for (int i = 0; i < size; i++) { cout << files[i].c_str() << endl; } }
相关文章推荐
- C++ 遍历文件夹下面所有文件
- c++ 循环遍历文件夹下的所有文件
- C++遍历文件夹下的所有文件
- C++ 遍历文件夹下所有文件
- c++遍历文件夹下所有文件
- windows下用c++和python遍历目录下的文件夹并删除所有文件名为xx的文件
- C/C++遍历Windows文件夹下的所有文件
- C++遍历文件夹的所有文件
- C++ 遍历文件夹中的所有文件
- c++ 遍历文件夹所有文件
- C++ 遍历文件夹下所有的文件
- c++遍历查找文件夹路径下的所有文件(比如.txt) 使用的是MFC的CFileFind类
- 用C++实现遍历文件夹下所有文件,windows ,linux 都能用
- C++遍历指定文件夹中的所有文件
- c++遍历文件夹里面的所有文件(1)
- C++ 遍历所有文件和文件夹,建立文件夹
- C++遍历文件夹下的所有文件
- C++遍历文件夹下所有文件的多种方法
- C++遍历文件夹下的所有文件
- C/C++遍历Windows文件夹下的所有文件