C++ 获取文件夹内的文件名,判断文件(夹)是否存在的两个函数

这个io.h库我也没学个,百度复制来在改了一下

#include<io.h>
#include<iostream>
#include<string>
#include<vector>
using namespace std;
#define Elif else if
#define Vpb push_back 
typedef const string &Tcsr;
typedef vector<string> Tvs;
//@@@@@@@@@@@@@@@@@@@@    判断文件(夹)是否存在    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
inline bool fi_cz(Tcsr ss) {
	return _access(ss.c_str(),0)!=-1;  }
//@@@@@@@@@@@@@@@@@@@@    获取文件夹下的文件名    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
long get_fs(Tvs &vs,string ss="",int m=0) {
	if(m<0||2<m) m=0;
	if(ss.empty()) ss="./";
	struct _finddata_t _fi;
	long fHandle;  long n=0;
	if( (fHandle=_findfirst(ss.append("/*").c_str(),&_fi))==-1L )
		return -1;	//文件夹不存在
	bool fo,b;
	do {
		fo=(_fi.attrib&_A_SUBDIR)? 1:0;	//文件夹==1,文件==0
		if(m==0)   b=!fo;	//文件
		Elif(m==1) b=fo;	//文件夹
		Elif(m==2) b=1;		//不管是什么都添加
		ss=_fi.name;
		if(b&&fo&&ss.back()=='.') continue;	//去掉".",".."两个文件夹,普通文件是不能以.结尾的
		if(b){ vs.Vpb(ss); ++n; }
		}while( _findnext(fHandle,&_fi)==0 );
	_findclose(fHandle);
	return n;  }
//    main()    //
int main()
{

bool b;
b=fi_cz("D:/新建文件夹");	//判断文件夹是否存在
b=fi_cz("D:/新建文本文档.txt");	//判断文件是否存在



long n;  Tvs vs;
n=get_fs(vs);		//返回数量,默认当前路径,获取文件

vs.clear();
n=get_fs(vs,"D:/新建文件夹");	//默认获取文件

vs.clear();
n=get_fs(vs,"",1);	//当前路径,获取文件夹

vs.clear();
n=get_fs(vs,"",2);	//当前路径,获取文件夹和文件

vs.clear();
n=get_fs(vs,"sdgsa");	//文件夹"sdgsa"不存在,返回-1 
cout<<n<<endl; 




return 0;  }







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值