_findfirst()& _findnext()遍历文件

2017-03-17  本文已影响0人  Carbin

这两个函数都包含在头文件 <io.h>中

文件的结构体为:

struct _finddata_t {

unsigned attrib;

time_t time_create;

time_t time_access;

time_t time_write;

_fsize_t size;

char name[260];

};

time_t,其实就是long,而_fsize_t,就是unsigned long;

attrib,就是所查找文件的属性:_A_ARCH(存档)、_A_HIDDEN(隐藏)、_A_NORMAL(正常)、_A_RDONLY(只读)、 _A_SUBDIR(文件夹)、_A_SYSTEM(系统)。

time_create、time_access和time_write分别是创建文件的时间、最后一次访问文件的时间和文件最后被修改的时间。

size:文件大小

name:文件名。

1、_findfirst()函数:long _findfirst(const char *, struct _finddata_t *);

第一个参数为文件名,可以用"*.*"来查找所有文件,也可以用"*.cpp"来查找.cpp文件。第二个参数是_finddata_t结构体指针。若查找成功,返回文件句柄,若失败,返回-1。

2、_findnext()函数:int _findnext(long, struct _finddata_t *);

第一个参数为文件句柄,第二个参数同样为_finddata_t结构体指针。若查找成功,返回0,失败返回-1。

3、_findclose()函数:int _findclose(long);

只有一个参数,文件句柄。若关闭成功返回0,失败返回-1。

调用案例:

#include <iostream>

#include <io.h>

#include <string>

void dir(string path)

{

long hFile = 0;

struct _finddata_t fileInfo;

string pathName, exdName;

if ((hFile = _findfirst(pathName.assign(path).append("\\*").c_str(), &fileInfo)) == -1) {

return;

}

do {

cout << fileInfo.name << (fileInfo.attrib&_A_SUBDIR ? "[folder]" : "[file]") << endl;

} while (_findnext(hFile, &fileInfo) == 0);

_findclose(hFile);

return;

}

int main()

{

string path = "D:\\code\\tickets\\blue";

dir(path);

getchar();

getchar();

return 0;

}

参考自:http://blog.sina.com.cn/s/blog_67e046d10100jwdo.html

上一篇下一篇

猜你喜欢

热点阅读