QFileSystem entryInfo不返回完整目录名

时间:2012-04-08 21:16:01

标签: c++ qt filesystems

所以我在我的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);
        }

上面的代码只是一个小小的片段,显然不会自行完成一大堆。它只是递归地读入所有文件和目录。

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

JEC

1 个答案:

答案 0 :(得分:1)

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

像这样的Dir结构:

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结果,并在其余代码中使用相同的对象。