यदि Qt, C ++ में कोई फ़ोल्डर मौजूद है (और फ़ोल्डर बना रहा है) की जाँच


153

Qt में, मैं कैसे जांच करूं कि क्या कोई दिया गया फ़ोल्डर वर्तमान निर्देशिका में मौजूद है?
यदि यह मौजूद नहीं है, तो मैं फिर एक खाली फ़ोल्डर कैसे बनाऊं?

जवाबों:


225

यह जाँचने के लिए कि "फोल्डर" नामक निर्देशिका उपयोग में मौजूद है:

QDir("Folder").exists();

"MyFolder" उपयोग नामक एक नया फ़ोल्डर बनाने के लिए:

QDir().mkdir("MyFolder");

1
यह उत्तर @ पेट्रुसिओ के उत्तर से कैसे तुलना करता है? मैं इसे डॉक्स से नहीं निकाल सकता।
जोनास जी। 23

1
यह स्थिर क्यों नहीं है? QDir::exists("absolutepath")औरQDir::mkdir(""absolutepath")
यालोव

@्यालोव - क्योंकि यह गैर-स्थैतिक के साथ टकराएगा QDir::mkdir("relative_path")। दोनों अधिभार के लिए संभव नहीं है।
टॉमस गैंडर

5
@ JonasG.Drange यह उत्तर किसी जटिल / पथ / संरचना में / मध्यवर्ती / फ़ोल्डर के साथ मध्यवर्ती फ़ोल्डर नहीं बनाता है। मेरा उत्तर वस्तुनिष्ठ रूप से बेहतर है; इसका कारण कम अपवित्रता है क्योंकि यह इस एक के दो साल बाद पोस्ट किया गया था।
पेट्रुसियो

152

यह जाँचने के लिए कि क्या यह मौजूद है और यदि यह नहीं है, तो बिचौलियों सहित दोनों की जाँच करें:

QDir dir("path/to/dir");
if (!dir.exists())
    dir.mkpath(".");

12

जब आप QDir.mkpath () का उपयोग करते हैं तो यह सही हो जाता है यदि पथ पहले से मौजूद है, तो दूसरी ओर QDir.mkdir () गलत है यदि पथ पहले से मौजूद है। इसलिए अपने कार्यक्रम के आधार पर आपको चुनना होगा कि कौन सा बेहतर है।

आप Qt प्रलेखन पर अधिक देख सकते हैं


0

यदि आपको एक खाली फ़ोल्डर की आवश्यकता है, तो जब तक आप एक खाली फ़ोल्डर नहीं पा लेते हैं

    QString folder= QString ("%1").arg(QDateTime::currentMSecsSinceEpoch());
    while(QDir(folder).exists())
    {
         folder= QString ("%1").arg(QDateTime::currentMSecsSinceEpoch());
    }
    QDir().mkdir(folder);

इस मामले में आपको एक नंबर के साथ एक फ़ोल्डर का नाम मिलेगा।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.