I have already a list of directory's paths. For example:
/home/aar/las
/home/aar/las/pes
/home/aar/las/fmp
/home/aar/.thumbnails
/home/aar/.thumbnails/normal
/home/aar/yfolder
/home/aar/.kde
/home/aar/.kde/share
/home/aar/.kde/share/config
/home/aar/.kde/share/apps
/home/aar/.kde/share/apps/okular
I want to remove all subdirectories and keep the parents only.
To do this, I used this code that's works fine:
QStringList RemoveSubFolders_KeepParentFolders(QStringList FoldersList)
{
QStringList FoldersList_First = FoldersList;
QStringList FoldersList_Second = FoldersList;
QStringList ToDelete;
foreach (QString TheFolder_First, FoldersList_First) {
foreach (QString TheFolder_Second, FoldersList_Second) {
if (TheFolder_Second.startsWith(TheFolder_First) && TheFolder_First.toLower() != TheFolder_Second.toLower())
ToDelete.append(TheFolder_Second);
}
}
QStringListIterator i(ToDelete);
while(i.hasNext()){
FoldersList.removeAll(i.next());
}
return FoldersList; //return list without subfolders
}
The Result is:
/home/aar/las
/home/aar/.thumbnails
/home/aar/yfolder
/home/aar/.kde
========================================================
The question:
Eventhough, I think that is not the the best and fastest way for a large list.
Is there an best way to do the job?
NB:
- I don't care about Windows or Ubunutu.
- I use Qt 5.8 c++.
Thank you.