【C/C++】学习笔记之_findfirst、_findnext和_findclose

前言

这是用来学习整理的,方便以后复习,但是里面的东西可能会有一些你不想要的

_findfirst、_findnext和_findclose

这三个东西是用来列出一定文件夹路径下的所有文件的,有用,但不多,这里简单介绍一下。
它们在这个头文件中:

#include<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_fsize_t分别是longunsigned long
参数解释如下:
attrib:表示文件的属性,以下为属性常量:

unsigned _A_ARCH	//存档
unsigned _A_HIDDEN  //隐藏
unsigned _A_NORMAL  //正常
unsigned _A_RDONLY  //只读
unsigned _A_SUBDIR  //文件夹
unsigned _A_SYSTEM  //系统

time_create:文件创建时间
time_access:文件最后一次访问时间
time_write:文件最后一次修改时间
size:文件大小
name:文件名

函数原型

_findfirst 原型如下:

long _findfirst(const char *, struct _finddata_t *);

第一个参数是路径,用.来查询文件,就比如说.exe就可以查询所有的.exe文件。
第二个参数就是上面讲的struct,大家自行理解。
此函数若运行成功会return一个long类型的句柄,否则返回-1。
_findnext原型如下:

int _findnext(long *,struct _finddata_t *);

这个函数的参数与上面的类似。但是这一次第一个参数是_findfirst函数返回的句柄。
_findclose原型如下:

int _findclose(long *);

第一个参数是第一个函数返回的句柄。
以上两个的函数它的返回值都是0(成功)或-1(失败)。

示例

#include<iostream>
#include<vector>
#include<io.h>
using namespace std;
int main(){
	string str,way;
	cout<<"请输入文件路径:"<<endl; 
	cin>>str;
	for(int i=0;i<str.size();i++){
		if(str[i]=='\\')str[i]='/';
	}
	way=str;
	cout<<"\n请输入文件类型:"<<endl;
	cin>>str;
	way+=str=="*"?"/":"/*";
	way+=str;
	long handle;
	_finddata_t temp;
	handle=_findfirst(way.c_str(),&temp);
	if(handle==-1){
		cout<<"Find flod ans file wrong\n";
		return 0;
	}
	do{
		cout<<temp.name<<endl;
	}while(!_findnext(handle,&temp));
	_findclose(handle);
} 

结果
上面的示例是非常简陋的,但可以对其拓展,实现更多功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值