2013-05-03 11 views
5

मैं यह जांचने की कोशिश कर रहा हूं कि कोई निर्देशिका खाली है या नहीं।जांचें कि निर्देशिका खाली है

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!!!"); 
    } 
} 

क्या सही तरीके से यह जांच करने के लिए, . और .. को छोड़कर?

+0

'0' एक स्ट्रिंग क्यों है? – Blender

+0

@ ब्लेंडर मेरे बुरे, बस जांचना चाहते हैं, अगर गिनती एक बूल है? – highlander141

+1

'.count() 'को एक पूर्णांक वापस करना चाहिए, इसलिए इसकी तुलना' 0' से करें, न कि '0" '। – Blender

उत्तर

20

ठीक है, मैं जिस तरह से करने के लिए यह

if(QDir("/home/highlander/Desktop/dir").entryInfoList(QDir::NoDotAndDotDot|QDir::AllEntries).count() == 0) 
{ 
    QMessageBox::information(this,"Directory is empty","Empty!!!"); 
} 
+2

यह जाने का सही तरीका है। '<3' एक हैक – UmNyobe

+2

QDir :: AllEntries छुपा (और संभवतः सिस्टम) फ़ाइलों के लिए पर्याप्त नहीं है। आपको उनके लिए भी जांच करनी चाहिए। – Kirinyale

1

यह करने का एक तरीका है।

#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; 
} 
+1

क्यों नहीं 'dir.count() <3' के साथ जांच करें? – HeyYO

+1

@ हेयोयो: यह एक बेहतर समाधान की तरह लगता है .. जवाब क्यों नहीं देते और क्रेडिट लेते हैं? –

-1

:) या तुम सिर्फ साथ जांच कर सकता मिला,

if(dir.count()<3){ 
    ... //empty dir 
} 
+0

हाँ, 'QMessageBox' में' mydir' के मान को कैसे दिखाया जाए ??? – highlander141

+1

यह एक और सवाल है। यह आपके द्वारा पूछे गए प्रश्न का सबसे आसान समाधान है। –

+3

जादू संख्या बहुत खराब अभ्यास है। यह अन्य प्लेटफार्मों पर अलग हो सकता है। –

0

Kirinyale के रूप में बताया, छिपा हुआ और सिस्टम फ़ाइलें (सॉकेट फ़ाइलों की तरह) highlander141 के जवाब में गिने जाते हैं। रूप में अच्छी तरह फिर उनकी गणना करने के लिए निम्न विधि पर विचार:

bool dirIsEmpty(const QDir& _dir) 
{ 
    QFileInfoList infoList = _dir.entryInfoList(QDir::AllEntries | QDir::System | QDir::NoDotAndDotDot | QDir::Hidden); 
    return infoList.isEmpty(); 
} 
संबंधित मुद्दे