【发布时间】:2018-11-21 12:19:20
【问题描述】:
我正在扫描这样的文件夹大小:
qint64 dirSize = 0;
int fileCount = 0;
for(QDirIterator itDir(someDir, QDir::NoDotAndDotDot|QDir::Files|QDir::Hidden|QDir::System,
QDirIterator::Subdirectories);
itDir.hasNext(); )
{
itDir.next();
dirSize += itDir.fileInfo().size();
++fileCount;
}
这似乎工作正常。
但是,我注意到包含 Windows 快捷方式 (.lnk) 的文件夹返回的大小比预期的要大得多。原因是返回的是快捷方式目标的大小,而不是快捷方式文件本身的大小。
在 Windows 上,符号链接(快捷方式)是 .lnk 文件。报告的 size() 是符号链接的大小(不是链接的目标)[...]
所以我的问题是:我在这里做错了什么?如何获取快捷方式文件的大小?
【问题讨论】:
-
这真的是 .lnk 文件吗?也许您正在使用不同类型的快捷方式。
-
是的,这些绝对是 Windows 快捷方式 (
.lnk) 文件。 -
在
itDir应该引用链接的情况下,itDir.filePath()(或itDir.fileInfo().filePath())返回的内容——是否是链接的路径本身还是目标的路径? -
两者都按预期返回链接本身的路径。
标签: c++ qt desktop-shortcut qfileinfo