**
C++遍历文件夹文件(Qt和Windows两种遍历)**
Qt遍历文件夹文件
//利用Qt遍历
QStringList ErgodicFile::fErgodicFile(const QString &config)
{
//判断路径是否存在
QDir dir(config);
if(!dir.exists())
{
return QStringList();
}
//获取所选文件类型过滤器
QStringList filters;
// 文件过滤
filters<<QString("*.exe")<<QString("*.dll")<<QString("*.tif")<<QString("*.png");
//定义迭代器并设置过滤器
QDirIterator dir_iterator(config,
filters,
QDir::Files | QDir::NoSymLinks,
QDirIterator::Subdirectories);
QStringList string_list;
while(dir_iterator.hasNext())
{
dir_iterator.next();
QFileInfo file_info = dir_iterator.fileInfo();
QString absolute_file_path = file_info.absoluteFilePath();
string_list.append(absolute_file_path);
}
for(int nu=0;nu<string_list.length();nu++)
{
qDebug() << string_list[nu];
}
return string_list;
}
windows遍历文件夹文件
//利用windows遍历
int ErgodicFile::fErgodicFile(const QString &config)
{
//目标文件夹路径
std::string inPath = "./*.tif";//遍历文件夹下的所有.tif文件
//用于查找的句柄
long handle;
struct _finddata_t fileinfo;
//第一次查找
handle = _findfirst(inPath.c_str(), &fileinfo);
if (handle == -1)
return -1;
do
{
//找到的文件的文件名
printf("%s\n", fileinfo.name);
} while (!_findnext(handle, &fileinfo));
_findclose(handle);
system("pause");
return 0;
}