【发布时间】:2014-05-21 00:55:42
【问题描述】:
我正在尝试打印目录中所有文件的文件名。但是,有些文件不显示或无法打开。
如果我重新启动程序,之前无法打开的文件实际上已经打开并显示出来了。 怎么回事?
这是我的代码:
QDirIterator iterator(dir.absolutePath(), QDirIterator::Subdirectories);
while (iterator.hasNext()) {
iterator.next();
QFile file(iterator.next());
if ( file.open( QIODevice::ReadOnly ) ) {
qDebug() << QFileInfo(file).fileName() << endl;
} else {
qDebug() << "Can't open " << QFileInfo(file).fileName() << endl;
}
}
【问题讨论】:
-
当您收到来自
open()的错误时,file.error()会告诉您什么? -
我得到
5的输出 -
QFile::OpenError 5 The file could not be opened.好吧,我想这不是很有帮助。您的程序的其他部分是否有可能以非共享模式打开该文件? -
为什么要把迭代器推进两次?!您将跳过每个第二个文件!只需删除
iterator.next();。 -
@RetiredNinja:我认为删除您的答案不是最好的主意。它会起作用,所以它很有用。它只是缺少一些解释并为其添加更多代码。我刚刚提到了这些,但这并不意味着我发现它没有用。我建议取消删除它,以便读者也可以看到。两个用户已经发现它很有用。 :)