मुझे दोबारा निर्देशिका के माध्यम से चलने के लिए क्यूटी कार्यों का उपयोग करके थोड़ा परेशानी है। मैं क्या करने की कोशिश कर रहा हूं:क्यूटी में एक निर्देशिका को दोबारा चलें, फ़ोल्डरों को छोड़ दें "।" और ".."
एक निर्दिष्ट निर्देशिका खोलें। निर्देशिका के माध्यम से वॉक, और हर बार यह एक और निर्देशिका का सामना करना पड़ता है कि निर्देशिका को खोलने, फ़ाइलों के माध्यम से चलना, आदि
अब, मैं इस बारे में जा रहा हूँ:
QString dir = QFileDialog::getExistingDirectory(this, "Select directory");
if(!dir.isNull()) {
ReadDir(dir);
}
void Mainwindow::ReadDir(QString path) {
QDir dir(path); //Opens the path
QFileInfoList files = dir.entryInfoList(); //Gets the file information
foreach(const QFileInfo &fi, files) { //Loops through the found files.
QString Path = fi.absoluteFilePath(); //Gets the absolute file path
if(fi.isDir()) ReadDir(Path); //Recursively goes through all the directories.
else {
//Do stuff with the found file.
}
}
}
अब, वास्तविक समस्या मुझे सामना करना पड़ रहा है: स्वाभाविक रूप से, entryInfoList भी '।' और '..' निर्देशिकाएं। इस सेटअप के साथ, यह एक बड़ी समस्या साबित करता है।
'।' में जाकर, यह पूरी निर्देशिका से दो बार या यहां तक कि असीमित रूप से (क्योंकि 'हमेशा' पहला तत्व होता है), '..' के साथ यह सभी फ़ोल्डरों के लिए प्रक्रिया को दोबारा कर देगा मूल निर्देशिका।
मैं यह अच्छा और चिकना करना चाहता हूं, क्या इस बारे में जाने का कोई तरीका है, मुझे पता नहीं है? या एकमात्र तरीका है, कि मुझे सादे फ़ाइल नाम (पथ के बिना) मिलता है और '।' के खिलाफ जांचें। तथा '..'?
हाँ, और के रूप में वर्णित [यहां] (http://www.qtcentre.org/threads/19085-QDir-entryInfoList-and-NoDotAndDotDot-filter), क्यूटी QDir, और फ़िल्टर करने की जरूरत है QDir :: AllEntries के साथ विस्तारित करने की आवश्यकता है। आपको अभी भी 'सही' मिल रहा है, क्योंकि आपने मुझे सही दिशा में इंगित किया है। धन्यवाद :) – ATaylor
Thx, मैंने तदनुसार जवाब अपडेट किया। –