// FileDirLoop.cpp
//
#include <iostream>
#include <io.h>
#include <string>
#include <vector>
using namespace std;
vector<string> filedirs;
int main()
{
_finddata_t file_info;
std::string current_path = "D:\\Paths\\*.*";//遍历文件夹下的所有文件
int handle = _findfirst(current_path.c_str(), &file_info);
if (-1 == handle )
{
cout << "cannot match the path" << endl;
return 0;
}
do
{
if (strcmp(file_info.name, "..") != 0 && strcmp(file_info.name, ".") != 0)//.是当前目录,..是上层目录,必须排除掉这两种情况
{//判断是否子目录
if (file_info.attrib == _A_SUBDIR)
{
if (filedirs.size()>0)
{
filedirs.insert(filedirs.begin(),file_info.name);
}
else
{
filedirs.push_back(file_info.name);
}
//cout << file_info.name << endl;
}
else
{
//cout << file_info.name << endl;
}
}
else
{
//cout <<"不是子目录!" << endl;
}
} while (!_findnext(handle, &file_info));//返回0则遍历完
//关闭文件句柄
_findclose(handle);
cout << "------逆序--------" << endl;
for (size_t i = filedirs.size(); i > 0; i--)
{
cout<<filedirs.at(i-1)<<endl;
}
cout << "-------正序---------------"<< endl;
for (size_t i = 0; i < filedirs.size(); i++)
{
cout << filedirs.at(i) << endl;
}
filedirs.pop_back();
cout << "-------移除正序最后一个--------" << endl;
for (size_t i = 0; i < filedirs.size(); i++)
{
cout << filedirs.at(i) << endl;
}
int x;
cin >> x;
return 0;
}
【C++】遍历文件夹下所有文件
最新推荐文章于 2024-02-28 19:34:41 发布