gpt4 book ai didi

c++ - 遍历目录及其子目录

转载 作者:太空宇宙 更新时间:2023-11-04 12:46:42 27 4
gpt4 key购买 nike

我使用这段代码遍历目录及其子目录。我这样做是为了从每个结束子目录中获取一个随机文件的路径并传递到下一个结束子目录。但是,在我的实现中,它遍历了结束子目录中的所有文件。

例如,来自/cars/bmw/model1/目录,只需要 /cars/bmw/model1/f.png 就足够了路径。

QDirIterator it(selectedReferenceFullDirectory, QDir::Files, QDirIterator::Subdirectories);

while(it.hasNext())
{
...
}

我的子目录是这样的:

/cars/bmw/model1/h.png
/cars/bmw/model1/f.png
/cars/bmw/model2/q.png
/cars/bmw/model1/hb/a.png
/cars/bmw/model1/sed/y.png
/cars/audi/model2/sed/y.png
...

所以,没有一定数量的子目录。由于目录中有大量照片,while 循环需要很长时间。你有什么想法有更好的表现吗?提前致谢

最佳答案

我建议不要遍历所有文件,而只遍历子目录。对于每个目录只取一个文件(随机)。这是我的做法(最简单的解决方案):

QStringList randomFiles(const QString &path)
{
QDirIterator it(path, QDir::AllDirs | QDir::NoDotAndDotDot,
QDirIterator::Subdirectories);
QStringList filePaths;
while (it.hasNext())
{
it.next();

QDir dir(it.filePath());
auto files = dir.entryInfoList(QDir::Files);
if (files.size() > 0)
{
// Take the first file from each directory.
// This might be a random file too, though.
filePaths.append(files.at(0).absoluteFilePath());
}
}
return filePaths;
}

关于c++ - 遍历目录及其子目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51204537/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com