头文件:#include<io.h>
1,获取该目录下的文件名,可以是文件,也可是文件夹
void getnames(std::string path, std::vector<std::string>& names)
{
//文件句柄
//long hFile = 0; //win7
intptr_t hFile = 0; //win10
//文件信息
struct _finddata_t fileinfo;
string p;
if ((hFile = _findfirst(p.assign(path).append("\\*").c_str(), &fileinfo)) != -1)
// "\\*"是指读取文件夹下的所有类型的文件,若想读取特定类型的文件,以jpg为例,则用“\\*.jpg”
{
do
{
{
if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0)
names.push_back(fileinfo.name);
}
} while (_findnext(hFile, &fileinfo) == 0);
_findclose(hFile);
}
}
2, 获取某个文件夹下的所有文件,返回各文件的路径
void getFiles1( string path, vector<string>& files )
{
//文件句柄
//long hFile = 0; //win7
intptr_t hFile = 0; //win10
//文件信息
struct _finddata_t fileinfo;
string p;
if((hFile = _findfirst(p.assign(path).append("\\*").c_str(),&fileinfo)) != -1)
// "\\*"是指读取文件夹下的所有类型的文件,若想读取特定类型的文件,以png为例,则用“\\*.png”
{
do
{
//如果是目录,迭代之
//如果不是,加入列表
if((fileinfo.attrib & _A_SUBDIR))
{
if(strcmp(fileinfo.name,".") != 0 && strcmp(fileinfo.name,"..") != 0)
getFiles1( p.assign(path).append("\\").append(fileinfo.name), files );
}
else
{
files.push_back(path + "\\" + fileinfo.name);
}
}while(_findnext(hFile, &fileinfo) == 0);
_findclose(hFile);
}
}
3,获取某个文件夹下的所有文件,返回各文件的路径和名称
void getFiles2( string path, vector<string>& files, vector<string> &ownname)
{
/*files存储文件的路径及名称(eg. C:\Users\WUQP\Desktop\test_devided\data1.txt)
ownname只存储文件的名称(eg. data1.txt)*/
//文件句柄
long hFile = 0;
//文件信息
struct _finddata_t fileinfo;
string p;
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)
getFiles2( p.assign(path).append("\\").append(fileinfo.name), files, ownname );
}
else
{
files.push_back(path +"\\" + fileinfo.name);
ownname.push_back(fileinfo.name);
}
}while(_findnext(hFile, &fileinfo) == 0);
_findclose(hFile);
}
}
参考博客:
https://www.cnblogs.com/yuehouse/p/10159358.html