Searches through the files in a directory, returning each file that is found. More...
#include <juce_DirectoryIterator.h>
Classes | |
struct | 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 File & | getFile () 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 = false |
int | index = -1 |
const bool | isRecursive |
String | path |
std::unique_ptr< DirectoryIterator > | subIterator |
int | totalNumFiles = -1 |
const int | whatToLookFor |
String | wildCard |
StringArray | wildCards |
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.
Please note that the order in which files are returned is completely undefined! They'll arrive in whatever order the underlying OS calls provide them, which will depend on the filesystem and other factors. If you need a sorted list, you'll need to manually sort them using your preferred comparator after collecting the list.
It also provides an estimate of its progress, using a (highly inaccurate!) algorithm.
{Core}
juce::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.
directory | the directory to search in |
isRecursive | whether all the subdirectories should also be searched |
wildCard | the file pattern to match. This may contain multiple patterns separated by a semi-colon or comma, e.g. "*.jpg;*.png" |
whatToLookFor | a value from the File::TypesOfFileToFind enum, specifying whether to look for files, directories, or both. |
juce::DirectoryIterator::~DirectoryIterator | ( | ) |
Destructor.
|
staticprivate |
float juce::DirectoryIterator::getEstimatedProgress | ( | ) | const |
Returns a guess of how far through the search the iterator has got.
const File& juce::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.
bool juce::DirectoryIterator::next | ( | ) |
Moves the iterator along to the next file.
bool juce::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.
|
staticprivate |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
mutableprivate |
|
private |
|
private |
|
private |