|
||
TFindFile
The following example accumulates a list of all the files on any drive
which are in a particular directory and which match a name with wildcards, for
example, all files matching \resources\fonts\*.gdr
.
To start a search, use TFindFile::FindWildByDir()
. You can
then call TFindFile::FindWild()
to perform the same search on
another drive.
To retrieve the fully qualified path of the matching files, class
TParse
is used to combine the filename with the drive letter and
directory which contains the file. The example works as follows:
Construct a TFindFile
object.
Use FindWildByDir()
to start the search for matching
files. There is considerable flexibility in the handling of
aWildName
and aScanDir
, but the simplest and most
common case is where aWildName
is the filename and extension (for
example, *.gdr
) and aScanDir
is the directory name,
without a drive letter, but including a trailing directory separator (for
example, \resources\fonts\
).
The list of matching files is returned in a CDir
object,
which is implemented as an array. Count()
retrieves the number of
items in the list.
Use file_finder.File()
to retrieve the drive and path of
the folder containing the files in the CDir
, (for example
Z:\resources\fonts\
).
Use TParse::Set()
to combine the file name and path into
a full filename.
Use TFindFile::FindWild()
to continue the search on the
next drive in the search sequence.
void ForAllMatchingFiles(RFs& aSession, const TDesC& aWildName,
const TDesC& aScanDir)
{
TFindFile file_finder(aSession);
CDir* file_list;
TInt err = file_finder.FindWildByDir(aWildname,aScanDir, file_list);
while (err==KErrNone)
{
TInt i;
for (i=0; i<file_list->Count(); i++)
{
TParse fullentry;
fullentry.Set((*file_list)[i].iName,& file_finder.File(),NULL);
// Do something with the full filename...
// ...
}
delete file_list;
err=file_finder.FindWild(file_list);
}
}
(*file_list)[i].iName
is the name of a file matching
the pattern specified (e.g. Eon.gdr
).
It is your responsibility to delete the CDir
object
when you have finished with it.