_findfirst()& _findnext()遍历文件

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,993评论 19 139
  • Java 语言支持的类型分为两类:基本类型和引用类型。整型(byte 1, short 2, int 4, lon...
    xiaogmail阅读 1,369评论 0 10
  • 1.创建文件夹 !/bin/sh mkdir -m 777 "%%1" 2.创建文件 !/bin/sh touch...
    BigJeffWang阅读 10,193评论 3 53
  • 一.我的教育理念升级了。 1.没有标准答案。 我在刚开始在得到学习薛兆丰的《北大经济学课》的时候,让我体会到教学思...
    乐得其说阅读 1,036评论 9 15
  • #每日教练问题# 你拥有。 今天是一章科普文。 给大家安利埃里克森五项原则 1.每个人都是OK的。 2.每个人拥有...
    雨婷儿呀阅读 353评论 0 0