void MainWindow::getAllFileName(QString path, QVector<QString> &path_vec)
{
QDir *dir=new QDir(path);
QStringList filter;
QList<QFileInfo> *fileInfo=new QList<QFileInfo>(dir->entryInfoList(filter));
for(int i = 0;i<fileInfo->count(); ++i)
{
const QFileInfo info_tmp = fileInfo->at(i);
QString path_tmp = info_tmp.filePath();
if( info_tmp.fileName()==".." || info_tmp.fileName()=="." )
{
}else if(info_tmp.isFile() ){
path_vec.push_back(path_tmp);
}else if(info_tmp.isDir()){
getAllFileName(path_tmp,path_vec);
}
}
}
传入文件路径和用于存储结果的QVector path_vec。
- 注意path_vec必须是引用类型的数据结构。因为获取的过程是一个递归的过程。
根据这个可以延伸,写出拷贝或删除一个文件路劲下的所有文件的接口。
或者给加入结果集合的文件名加上过滤条件,可以过滤出所有的txt文件、doc文件等。