我有一个包含以下结构的目录。
Name-
-Year1
-Month1
-Day1
-file1
-..
-...
-Year2
-Month1
-...
-...
现在我有2个日期2009-01-02和2010-02-03。
我想问一下是否有人知道如何列出给定时间内文件夹中的所有文件,而不构建一个巨大的if-else结构。 如果可能的话,没有任何其他框架而不是Qt。
非常感谢任何帮助!
答案 0 :(得分:7)
查看QDir::entryList(),它会列出文件夹中的所有文件。您可以像这样构建目录路径:
QString path = QDir::currentPath() + "/" +
QString::fromNumber(year) + "/" +
QString::fromNumber(month) + "/" +
QString::fromNumber(day);
然后再做
QDir dir(path);
QStringList files = dir.entryList();
您可以对其他日期执行相同操作,然后合并两个QStringLists。
答案 1 :(得分:2)
您可以创建一个迭代器,扫描目录树,如下所示:
QDir dir("YOUR_PATH_BASE"); //"Name"
if (dir.exists())
{
foreach(QFileInfo info, dir.entryInfoList(QDir::NoDotAndDotDot | QDir::Files | QDir::AllDirs ))
{
if (info.isFile())
{
//do something
}
if (info.isDir())
{
//scan again
}
}
}
答案 2 :(得分:1)
您可以使用QDir类来执行此操作。在那里,您可以递归遍历所有子文件夹。为此,您可以使用entryInfoList方法。它返回目录中所有文件和目录的QFileInfo个对象列表。对于此列表中的每个条目,您可以检查它是directory还是file。如果它是一个目录,那么你必须更深入。
希望这能以某种方式帮助你。