QFile系统条目信息不返回完整的目录名称

QFileSystem entryInfo not returning full directories name

本文关键字:返回 系统 信息 QFile      更新时间:2023-10-16

所以我的 iTunes 资料库中有一些重复的歌曲(准确地说是 844),所以我想我会写一个小程序来查找和销毁重复的歌曲。我遇到的问题是某些目录未正确读取。

例如,专辑的文件夹名称之一是"Greatest Hits, Vol. 2",但读作"Greatest Hits, Vol"

显然,"."导致了问题。有谁知道允许我读取完整文件路径名(带句点)的解决方法?

代码的小截图。

QString name;
int id;
    for (int a = 0; a < dir.entryList(QDir::Files | QDir::AllDirs | QDir::NoDotAndDotDot).length(); ++a)
        {
            name =  path() + "/" + baseName() + "/" + dir.entryList(QDir::AllEntries | QDir::NoDotAndDotDot).at(a);
            subFiles.append(new CKClone(id, path() + "/" + baseName() + "/" + dir.entryList(QDir::AllEntries | QDir::NoDotAndDotDot).at(a), this));
            // Updating the ID number to account for descendants.
            id = subFiles.last()->countDescendants(id);
        }

上面的代码只是一个小截图,显然不会自己做一大堆。它只是递归地读取所有文件和目录。

任何帮助将不胜感激,谢谢

杰克

我实际上在 PyQt 中对此进行了测试,发现问题对我来说没有发生。这是使用 Qt 4.8 测试的,因此您可能需要检查它是否是特定于您的版本的问题。

目录结构如下:

testing/
    a path with spaces/
    patH_with_no_spaces/
    path with version, vol. 2/

测试代码段

from PyQt4 import QtCore
d = QtCore.QDir("testing")
list(d.entryList(d.AllEntries|d.NoDotAndDotDot))
# output
[
    PyQt4.QtCore.QString(u'a path with spaces'), 
    PyQt4.QtCore.QString(u'path with version, vol. 2'), 
    PyQt4.QtCore.QString(u'patH_with_no_spaces')
]

您可能希望首先尝试进一步简化代码,以查看它是否是代码中的错误。您似乎每次循环、构建字符串和追加时都会重新生成列表。尝试在循环之前保存该entryList调用的 QStringList 结果一次,并对其余代码使用相同的对象。