标签:
想要实现对 文件夹 中 文件信息 的 查找与路径获取,需要用到 头文件 #include "io.h" 中的 一个结构体 和 三个函数
1. 结构体 struct _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];//文件的文件名 };
2. 函数 long _findfirst ( char *filespec, struct _finddata_t *fileinfo );
参数:
filespec:标明文件的字符串,可支持通配符。比如:*.c,则表示当前文件夹下的所有后缀为C的文件。
fileinfo :存放文件信息的结构体的指针。结构体必须在调用此函数前声明,不过不用初始化,只要分配了内存空间就可以了。函数成功后,会把找到的文件的信息放入这个结构体中。
返回:
如果查找成功,返回一个long型的唯一的查找用的句柄(就是一个唯一编号)。这个句柄将在_findnext函数中被使用。若失败,则返回-1。
参数:
handle:即由_findfirst函数返回的句柄。
fileinfo:文件信息结构体的指针。找到文件后,函数将该文件信息放入此结构体中。
返回:
若成功返回0,否则返回-1。
4. 函数 int _findclose( long handle );
参数:
handle :_findfirst函数返回回来的句柄。
返回:
成功返回0,失败返回-1。
参考案例:
1 #include<io.h> 2 #include<iostream> 3 using namespace std; 4 5 string filepath[1005]; 6 7 // 获取文件夹中所有文件的路径,并保存于filepath[]数组中 8 int getFilePath() 9 { 10 int i = 0; 11 string path = "F:\\ImageTest\\"; 12 struct _finddata_t fileinfo;//文件信息的结构体 13 string pathname; 14 long handle;//用于查找的句柄 15 16 // 遍历所有的类型 17 //handle = _findfirst(pathname.assign(path).append("\\*").c_str(), &fileinfo); 18 19 // 遍历所有 .jpg文件 20 handle = _findfirst(pathname.assign(path).append("\\*.jpg" ).c_str(), &fileinfo); 21 if (handle == -1) 22 return -1; 23 do { 24 filepath[i] = path + fileinfo.name; 25 i++; 26 } while (_findnext(handle, &fileinfo) == 0); 27 //_findclose(handle);//关闭句柄 28 29 // 遍历所有 .bmp文件 30 handle = _findfirst(pathname.assign(path).append("\\*.bmp" ).c_str(), &fileinfo); 31 if (handle == -1) 32 return -1; 33 do { 34 filepath[i] = path + fileinfo.name; 35 i++; 36 } while (_findnext(handle, &fileinfo) == 0); 37 _findclose(handle);//关闭句柄 38 39 return i; 40 } 41 42 int main() 43 { 44 int fileNum = getFilePath(); 45 for(int i = 0 ; i < fileNum ; i++) 46 { 47 cout << filepath[i] << endl; 48 } 49 return 0; 50 }
标签:
原文地址:http://www.cnblogs.com/theBoyisNone/p/5656347.html