我不需要点和点

I do not need dot and dotdot

本文关键字:不需要      更新时间:2023-10-16

当我通过QDir::entryInfoList列出条目时,我得到了两个额外的条目,一个带有点,第二个带有两个点。如果我设置QDir::NoDot和QDir::NoDotDot,则没有列出任何内容。我只需要传递给QDir的文件夹的内容,其他什么都不需要。

 QFileInfo fi(model_->filePath(e));
        auto file_path = fi.absoluteFilePath();
        auto lyst = QDir(fi.absoluteFilePath()).entryInfoList(/*QDir::NoDotAndDotDot makes lyst empty*/);
        foreach (QFileInfo info , lyst)
        {
            qDebug() << info.absoluteFilePath();
        }

通过QDir::NoDotAndDotDot过滤器或QDir::Files或任何您感兴趣的entryInfoList

auto lyst =
 QDir(fi.absoluteFilePath()).entryInfoList(QDir::NoDotAndDotDot|QDir::AllEntries);

根据这篇文章:

过滤标志的默认值为QDir::AllEntries。当您使用QDir::setFlagsQDir::entryList覆盖默认标志时,您不应该忘记包括QDir::DirsQDir::FilesQDir::Drives中的至少一个来获取任何条目。

我想象你的代码看起来像这样(还没有测试过):

QFileInfo fi(model_->filePath(e));
auto file_path = fi.absoluteFilePath();
auto lyst = QDir(fi.absoluteFilePath()).entryInfoList(QDir::NoDotAndDotDot | QDir::Dirs | QDir::Files);
foreach (QFileInfo info , lyst)
{
    qDebug() << info.absoluteFilePath();
}