You Are Here:

Community: Wiki

This page was last modified on 3 September 2009, at 07:28.

QDirIterator Filter directory content

From Forum Nokia Wiki


Contents

Use Case

We may need to filter the directory content. For example we want to list all mp3 files in a path.

QDirIterator is used to iterate through a path and filter all files with a particular suffix.

Code

The following code snippet takes a path and filters as parameters. Returns a list with all files which matched the filter

QStringList MyIterator::getDirContent(const QString& aPath,
QStringList aFilters)
{
// append the filtered files to this list
QStringList list;
 
// set dir iterator
QDirIterator dirIterator(aPath,
aFilters,
QDir::AllDirs|QDir::Files|QDir::NoSymLinks,
QDirIterator::Subdirectories);
while(dirIterator.hasNext())
{
// make sure to call next, failing todo so will result in infinite loop
dirIterator.next();
 
// found required file
if(dirIterator.fileInfo().completeSuffix().contains(KFilterSuffix,Qt::CaseInsensitive))
{
list.append(dirIterator.fileInfo().absoluteFilePath());
}
}
 
return list;
}

Explanation

QDirIterator dirIterator(aPath,
aFilters,
QDir::AllDirs|QDir::Files|QDir::NoSymLinks,
QDirIterator::Subdirectories);

Setup a directory iterator on the supplied path. In the second argument we set the filters (required file suffixes). Using third argument we set the Directory filters. In this case we check all directories, files and ignore symbolic links. The last argument is iterator flags which is set to iterate sub directories also.


dirIterator.hasNext()

Check if the iterator has any entries

// make sure to call next, failing todo so will result in infinite loop
dirIterator.next();

next() will increment the iterator to the next item. Make sure to call this, else the while loop becomes infinite loop.

Usage

QString musicPath = QDesktopServices::storageLocation(QDesktopServices::MusicLocation);
QStringList filters;
filters<<"*.mp3";
QStringList myMp3SongsList = getDirContent(musicPath,filters);

Rate This

 
Bookmark this page: DeliciousDiggFacebookGoogleYahooStumbleUponRedditDiigoTechnocratiTwitter  Share this page Share this page Print this Page Print this page Invite a friend Invite a friend
京ICP备05048969号    Email Newsletters Press Terms & Conditions Privacy Policy Sitemap Contact Us © 2009 Nokia 
RDF Facets: qdcZidentifierQSxhttpE3aE2fE2fwikiE2eforumE2enokiaE2ecomE2findeE78E2ephpE2fTalkE3aE4cargeE5fscreenE5fsaverX qdcZtypeQUqfnZE45E78cludedFromGeneralE4cistingsQ qdcZtypeQUqfntypeZCommunityContentQ qdcZtypeQUqfntypeZE52esourceQ qdcZtypeQUqfntypeZWebpageQ qdcZtypeQUqfntypeZWikiContentQ qdcZtypeQUqmarsZManagedE52esourceQ qdcZtypeQUqwebZInformationE52esourceQ qdcZtypeQUqwebZPageQ qdcZtypeQUqwebZE52esourceQ qdcZtypeQUqrdfsZE52esourceQ qfnZtypeQUqfntypeZCommunityContentQ qfnZtypeQUqfntypeZE52esourceQ qfnZtypeQUqfntypeZWebpageQ qfnZtypeQUqfntypeZWikiContentQ qmarsZlanguageQUxhttpE3aE2fE2fswE2enokiaE2ecomE2flanguageE2d1E2fenX qrdfZtypeQUqfnZE45E78cludedFromGeneralE4cistingsQ qrdfZtypeQUqfntypeZCommunityContentQ qrdfZtypeQUqfntypeZE52esourceQ qrdfZtypeQUqfntypeZWebpageQ qrdfZtypeQUqfntypeZWikiContentQ qrdfZtypeQUqmarsZManagedE52esourceQ qrdfZtypeQUqwebZInformationE52esourceQ qrdfZtypeQUqwebZPageQ qrdfZtypeQUqwebZE52esourceQ qrdfZtypeQUqrdfsZE52esourceQ