这个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; }