Ho un piccolo problema nell'usare le funzioni Qt per scorrere ricorsivamente una directory. Cosa sto cercando di fare:Cammina una directory in modo ricorsivo in Qt, salta le cartelle "." e ".."
Aprire una directory specificata. Passeggiata attraverso la directory, e ogni volta che incontra un'altra directory, aprire la directory, a piedi attraverso i file, ecc
Ora, come sto andando a questo:
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.
}
}
}
Ora, il problema reale Sto affrontando: Naturalmente, entryInfoList restituirà anche il '.' e ".." directory. Con questa configurazione, questo è un grosso problema.
Entrando in ".", Passerebbe attraverso l'intera directory due volte o anche infinitamente (perché "." È sempre il primo elemento), con ".." si rifarebbe il processo per tutte le cartelle sotto il directory principale.
Mi piacerebbe fare questo bello ed elegante, c'è un modo per farlo, non ne sono a conoscenza? O è l'unico modo per ottenere il nome file semplice (senza il percorso) e controllare quello con '.' e '..'?
Sì, e come descritto [qui] (http://www.qtcentre.org/threads/19085-QDir-entryInfoList-and-NoDotAndDotDot-filter), il QT deve essere QDir, e il filtro deve essere ampliato con QDir :: AllEntries. Stai ancora ottenendo il 'corretto', perché mi hai indicato nella giusta direzione. Grazie :) – ATaylor
Thx, ho aggiornato la risposta di conseguenza. –