美文网首页
_findfirst()& _findnext()遍历文件

_findfirst()& _findnext()遍历文件

作者: Carbin | 来源:发表于2017-03-17 16:20 被阅读0次

    这两个函数都包含在头文件 <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

    相关文章

      网友评论

          本文标题: _findfirst()& _findnext()遍历文件

          本文链接:https://www.haomeiwen.com/subject/xvwenttx.html