检查目录是否为空
我试图检查目录是否为空。检查目录是否为空
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QDir Dir("/home/highlander/Desktop/dir");
if(Dir.count() == 0)
{
QMessageBox::information(this,"Directory is empty","Empty!!!");
}
}
请告诉我正确的方式检查,排除.
和..
?
好了,我该怎么做吧:)
if(QDir("/home/highlander/Desktop/dir").entryInfoList(QDir::NoDotAndDotDot|QDir::AllEntries).count() == 0)
{
QMessageBox::information(this,"Directory is empty","Empty!!!");
}
这是做到这一点的一种方法。
#include <QCoreApplication>
#include <QDir>
#include <QDebug>
#include <QDesktopServices>
int main(int argc, char *argv[])
{
QCoreApplication app(argc,argv);
QDir dir(QDesktopServices::storageLocation(QDesktopServices::DesktopLocation));
QStringList list = dir.entryList();
int count;
for(int x=0;x<list.count(); x++)
{
if(list.at(x) != "." && list.at(x) != "..")
{
count++;
}
}
qDebug() << "This directory has " << count << " files in it.";
return 0;
}
为什么不用'dir.count() HeyYO 2013-05-03 05:07:20
@HeyYO:这似乎是一种更好的解决方案..为什么不回答并获得信用? – 2013-05-03 05:16:10
或者你可以只用检查的方式;
if(dir.count()<3){
... //empty dir
}
是啊,如何在'QMessageBox'中显示'mydir'的值? – highlander141 2013-05-03 05:22:45
这是另一个问题。这是你问的最简单的解决方案。 – 2013-05-03 05:43:42
魔术数字是非常糟糕的做法。在其他平台上可能会有所不同。 – 2013-05-03 09:42:44
由于Kirinyale指出,隐藏和系统文件(如套接字文件) 没有在highlander141的答案计数。 要计数这些,请考虑以下方法:
bool dirIsEmpty(const QDir& _dir)
{
QFileInfoList infoList = _dir.entryInfoList(QDir::AllEntries | QDir::System | QDir::NoDotAndDotDot | QDir::Hidden);
return infoList.isEmpty();
}
为什么'0'是一个字符串? – Blender 2013-05-03 04:42:58
@Blender我的坏,只是想检查,如果伯爵是一个布尔? – highlander141 2013-05-03 04:44:18
'.count()'应该返回一个整数,所以把它和'0'比较,而不是''0''。 – Blender 2013-05-03 04:45:03