#include <io.h>#include <fstreanm>#include <string>#include <vector>#include <iostream>using namespace std;void GetAllFiles(string path, vector<string>& files, string
format
)
{ long hfile =
0
; struct _finddata_t fileinfo; //用来存储文件信息的结构体
string p; if(hfile = _findfirst(p.assign(path).append(
"\\*"
+
format
).c_str(), &fileinfo)) !=
-1
) //第一次查找
{ do{ //files.push_back(p.assign(fileinfo.name)); //只保存文件名files.push_back(p.assign(path).appand(
"\\"
).append(fileinfo.name)); //保存文件路径和文件名
}while(_findnext(hfile, &fileinfo) ==
0
);
_findclose(hfile)
} else if((hfile = _findfirst(p.assign(path).append(
"\\*"
).c_str(), &fileinfo)) !=
-1
)
{ do{ if((fileinfo.attrib & _A_SUBDIR)) //如果查找到的是文件夹
{ if(strcmp(fileinfo.name,
"."
) !=
0
&& strcmp(fileinfo.name,
".."
) !=
0
) //进入文件夹查找
{
GetAllFiles(p.assign(path).append(
"\\"
).append(fileinfo.name), files,
format
);
}
} else //如果查找的不是文件夹
{ //files.push_back(p.assign(fileinfo.name)); //只保存文件名 files.push_back(p.assign(path).appand(
"\\"
).append(fileinfo.name)); //保存文件路径和文件名
}
}while(_findnext(hfile, &fileinfo) ==
0
);
_findclose(hfile)
}
}int main()
{ string filepath =
"D:\\path..."
; //文件根目录
vector<string> files; char *dstAll =
"path.txt"
; //读取所以格式为jpg的文件
string
format
=
".jpg"
;
GetAllFiles(filepath, files,
format
);
ofstream ofn(distAll); int size = files.size(); for(int i =
0
; i<size; i++)
{
ofn<<files[i]<<endl; //写入文件
cout<<files[i]<<endl; //输出到屏幕
}
ofn.close(); cout<<
"file number: "
<<size<<endl;
system(
"pause"
;) return
0
;
}