码迷,mamicode.com
首页 > 编程语言 > 详细

遍历文件夹中所有文件(C++)

时间:2016-07-09 19:35:57      阅读:938      评论:0      收藏:0      [点我收藏+]

标签:

 

想要实现对 文件夹 中 文件信息 的 查找与路径获取,需要用到 头文件 #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。

 

3. 函数 int  _findnext ( long handle, struct _finddata_t *fileinfo );

参数:

  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 }

 

 

 

 

 

 

 

 

 

        

 

遍历文件夹中所有文件(C++)

标签:

原文地址:http://www.cnblogs.com/theBoyisNone/p/5656347.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!