Ignorando il filtraggio estensione txt ... Ecco un modo per eliminare tutto nella cartella , tra cui sottodirectory non vuote:
In QT5, è possibile utilizzare removeRecursively() su dirs. Sfortunatamente, questo rimuove l'intera directory, piuttosto che semplicemente svuotarla. Qui è di base una funzione per cancellare solo i contenuti di una directory.
void clearDir(const QString path)
{
QDir dir(path);
dir.setFilter(QDir::NoDotAndDotDot | QDir::Files);
foreach(QString dirItem, dir.entryList())
dir.remove(dirItem);
dir.setFilter(QDir::NoDotAndDotDot | QDir::Dirs);
foreach(QString dirItem, dir.entryList())
{
QDir subDir(dir.absoluteFilePath(dirItem));
subDir.removeRecursively();
}
}
In alternativa, è possibile utilizzare removeRecursively() sulla directory che si desidera cancellare (che eliminerebbe del tutto). Quindi, ricrealo con lo stesso nome dopo quello ... L'effetto sarebbe lo stesso, ma con meno righe di codice. Questa funzione più prolissa, tuttavia, fornisce un maggiore potenziale per la gestione dettagliata delle eccezioni da aggiungere se lo si desidera, ad es. rilevamento di violazioni di accesso su specifici file/cartelle ...
Ma voglio usare QT, come ho affermato nella domanda. – user1794021