您的位置:首页 > 编程语言 > C语言/C++

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

2017-01-19 19:46 639 查看
这个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;  }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐