使用C++遍历当前文件夹下的子文件夹和文件
使用C++遍历文件夹下的子文件夹和文件
#include<iostream>
#include<vector>
#include<algorithm>
#include<fstream>
#include<iterator>
#include<string>
#include<sstream>
#include<io.h>
using namespace std;
#define MAX_PATH 1024
void getAllFile(string lpPath, vector<string>& fileList)
{
long hFile = 0;
struct _finddata_t fileinfo;
string str;
if ((hFile = _findfirst(str.assign(lpPath).append("\\*").c_str(), &fileinfo) )!= -1)
{
//使用do_while判断传递进去的是否为文件夹
do
{
if ((fileinfo.attrib & _A_SUBDIR)) //判断是否为文件夹
{
if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0)
{
//获取到当前文件夹的文件名
str.assign(lpPath).append("/").append(fileinfo.name);
fileList.push_back(str);
//递归对文件夹进行遍历
getAllFile(str, fileList);
}
}
else {//对文件就行了
fileList.push_back(str.assign(lpPath).append("/").append(fileinfo.name));
}
} while (_findnext(hFile, &fileinfo) == 0);
_findclose(hFile);
}
}
int main()
{
// cout<<"hello world"<<endl;
string DATA_DIR = "F:/code/data";
vector<string>files;
getAllFile(DATA_DIR, files);
for (auto i : files)
{
cout << i << endl;
}
}