JUCE  v5.1.1-3-g1a0b28c73
JUCE API
DirectoryIterator Class Reference

Searches through the files in a directory, returning each file that is found. More...

#include <juce_DirectoryIterator.h>

Collaboration diagram for DirectoryIterator:

Classes

class  NativeIterator
 

Public Member Functions

 DirectoryIterator (const File &directory, bool isRecursive, const String &wildCard="*", int whatToLookFor=File::findFiles)
 Creates a DirectoryIterator for a given directory. More...
 
 ~DirectoryIterator ()
 Destructor. More...
 
float getEstimatedProgress () const
 Returns a guess of how far through the search the iterator has got. More...
 
const FilegetFile () const
 Returns the file that the iterator is currently pointing at. More...
 
bool next ()
 Moves the iterator along to the next file. More...
 
bool next (bool *isDirectory, bool *isHidden, int64 *fileSize, Time *modTime, Time *creationTime, bool *isReadOnly)
 Moves the iterator along to the next file, and returns various properties of that file. More...
 

Static Private Member Functions

static bool fileMatches (const StringArray &wildCards, const String &filename)
 
static StringArray parseWildcards (const String &pattern)
 

Private Attributes

File currentFile
 
NativeIterator fileFinder
 
bool hasBeenAdvanced
 
int index
 
const bool isRecursive
 
String path
 
ScopedPointer< DirectoryIteratorsubIterator
 
int totalNumFiles
 
const int whatToLookFor
 
String wildCard
 
StringArray wildCards
 

Friends

struct ContainerDeletePolicy< NativeIterator::Pimpl >
 

Detailed Description

Searches through the files in a directory, returning each file that is found.

A DirectoryIterator will search through a directory and its subdirectories using a wildcard filepattern match.

If you may be scanning a large number of files, it's usually smarter to use this class than File::findChildFiles() because it allows you to stop at any time, rather than having to wait for the entire scan to finish before getting the results.

It also provides an estimate of its progress, using a (highly inaccurate!) algorithm.

Constructor & Destructor Documentation

◆ DirectoryIterator()

DirectoryIterator::DirectoryIterator ( const File directory,
bool  isRecursive,
const String wildCard = "*",
int  whatToLookFor = File::findFiles 
)

Creates a DirectoryIterator for a given directory.

After creating one of these, call its next() method to get the first file - e.g.

DirectoryIterator iter (File ("/animals/mooses"), true, "*.moose");
while (iter.next())
{
File theFileItFound (iter.getFile());
... etc
}
Parameters
directorythe directory to search in
isRecursivewhether all the subdirectories should also be searched
wildCardthe file pattern to match. This may contain multiple patterns separated by a semi-colon or comma, e.g. "*.jpg;*.png"
whatToLookFora value from the File::TypesOfFileToFind enum, specifying whether to look for files, directories, or both.

◆ ~DirectoryIterator()

DirectoryIterator::~DirectoryIterator ( )

Destructor.

Member Function Documentation

◆ fileMatches()

static bool DirectoryIterator::fileMatches ( const StringArray wildCards,
const String filename 
)
staticprivate

◆ getEstimatedProgress()

float DirectoryIterator::getEstimatedProgress ( ) const

Returns a guess of how far through the search the iterator has got.

Returns
a value 0.0 to 1.0 to show the progress, although this won't be very accurate.

◆ getFile()

const File& DirectoryIterator::getFile ( ) const

Returns the file that the iterator is currently pointing at.

The result of this call is only valid after a call to next() has returned true.

◆ next() [1/2]

bool DirectoryIterator::next ( )

Moves the iterator along to the next file.

Returns
true if a file was found (you can then use getFile() to see what it was) - or false if there are no more matching files.

◆ next() [2/2]

bool DirectoryIterator::next ( bool *  isDirectory,
bool *  isHidden,
int64 fileSize,
Time modTime,
Time creationTime,
bool *  isReadOnly 
)

Moves the iterator along to the next file, and returns various properties of that file.

If you need to find out details about the file, it's more efficient to call this method than to call the normal next() method and then find out the details afterwards.

All the parameters are optional, so pass null pointers for any items that you're not interested in.

Returns
true if a file was found (you can then use getFile() to see what it was) - or false if there are no more matching files. If it returns false, then none of the parameters will be filled-in.

◆ parseWildcards()

static StringArray DirectoryIterator::parseWildcards ( const String pattern)
staticprivate

Friends And Related Function Documentation

◆ ContainerDeletePolicy< NativeIterator::Pimpl >

friend struct ContainerDeletePolicy< NativeIterator::Pimpl >
friend

Member Data Documentation

◆ currentFile

File DirectoryIterator::currentFile
private

◆ fileFinder

NativeIterator DirectoryIterator::fileFinder
private

◆ hasBeenAdvanced

bool DirectoryIterator::hasBeenAdvanced
private

◆ index

int DirectoryIterator::index
private

◆ isRecursive

const bool DirectoryIterator::isRecursive
private

◆ path

String DirectoryIterator::path
private

◆ subIterator

ScopedPointer<DirectoryIterator> DirectoryIterator::subIterator
private

◆ totalNumFiles

int DirectoryIterator::totalNumFiles
mutableprivate

◆ whatToLookFor

const int DirectoryIterator::whatToLookFor
private

◆ wildCard

String DirectoryIterator::wildCard
private

◆ wildCards

StringArray DirectoryIterator::wildCards
private

The documentation for this class was generated from the following file: