给定一个目录,获得该目录下的所有子目录名和文件名,并对目录和文件进行分类。
通过QDir的entryInfoList或entryList方法,两者区别是entryInfoList返回的是QFileInfoList,entryList返回QStringList。可以指定文件名filter,目录类型 QDir::Filters,结果的排序规则QDir::SortFlags
方法一:
QDir dir("D:\\parent");
if (dir.exists()) //判断目录是否存在
{
QStringList dir_list = dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot); //去掉"."和".."
QStringList file_list = dir.entryList(QDir::Files | QDir::NoDotAndDotDot);
QStringList nameFilters;
nameFilters << "*.txt" << "*.ini";
QStringList file_list_spec = dir.entryList(nameFilters, QDir::Files | QDir::NoDotAndDotDot);
}
方法二:
QDir dir("D:\\parent");
QFileInfoList info_list = dir.entryInfoList(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot);
QListIterator<QFileInfo> i(info_list);
QStringList dir_list, file_list;
while (i.hasNext())
{
QFileInfo info = i.next();
if (info.isDir())
{
dir_list << QDir(info.absoluteFilePath()).dirName();
}
if (info.isFile())
{
file_list << info.fileName();
}
}
获取多级目录下的文件名
QDir::entryList并不支持目录的深度搜索,只会获得一级目录下的内容,因此需要通过递归的方式进行深度搜索