Для целей тестирования я создал ярлык одного из DLL-файлов Qt.Я поместил этот ярлык в пустую папку.Я также создал ярлык sdktool.exe в Qt и поместил его в ту же папку.
Я также заметил, что size () возвращает размер фактического файла, а не размер ярлыка.Я помню, что у меня было похожее поведение в моем старом проекте, и я открыл файл перед чтением размера.
for (QDirIterator itr(someDir, QDir::NoDotAndDotDot|QDir::Files|QDir::Hidden|QDir::System,
QDirIterator::Subdirectories); itr.hasNext();) {
itr.next();
// Shows wrong size
qDebug() << itr.fileName() << ", size (unopened): " << itr.fileInfo().size();
QFile file(itr.filePath());
if (file.exists() && file.open(QIODevice::ReadOnly)) {
// Now the size shows correctly
qDebug() << "Size when opened: " << file.size();
file.close();
}
}
Выводы:
"sdktool.lnk" , size (unopened): 2817024
Size when opened: 1325
"test.lnk" , size (unopened): 4429312
Size when opened: 951
Свойство файла Windows 10окно показывает, что размер "test.lnk" составляет 951 байт, а размер "sdktool.lnk" - 1325 байт.