Recursive Directory Search

Post those lines of code you feel like sharing or find what you require for your project here; or simply use them as tutorials.
Post Reply
kklouzal
Posts: 343
Joined: Sun Mar 28, 2010 8:14 pm
Location: USA - Arizona

Recursive Directory Search

Post by kklouzal »

Code: Select all

void FindDirectoriesInDirectory(irr::io::IFileSystem* FileSystem, std::vector<const irr::io::path>& Directories, const irr::io::path Directory)
{
    const irr::io::path OriginalWorkingDirectory = FileSystem->getWorkingDirectory();
    //
    //  Change working directory to search path
    FileSystem->changeWorkingDirectoryTo(Directory);
    //
    //  Get all files and folders in working directory
    irr::io::IFileList* Files = FileSystem->createFileList();
    //
    //  Set back the original working directory
    FileSystem->changeWorkingDirectoryTo(OriginalWorkingDirectory);
    //
    //  Loop through all found files and folders
    for (unsigned int i = 0; i < Files->getFileCount(); i++)
    {
        //
        //  Make sure were looking at a directory
        if (Files->isDirectory(i))
        {
            //
            //  Skip 'current level' and 'jump level' wildcards
            if (Files->getFileName(i) == "." || Files->getFileName(i) == "..") { continue; }
            //
            //  Add the trailing forward slash onto the path
            const irr::io::path FoundDirectory = Files->getFullFileName(i) + "/";
            //
            //  Add newly found directory to vector
            Directories.push_back(FoundDirectory);
            //
            //  Search again through our newly found directory for more directories
            FindDirectoriesInDirectory(FileSystem, Directories, FoundDirectory);
        }
    }
    //
    //  Drop the IFileList
    Files->drop();
}
 
//
//
//  Useage
//
 
irr::io::IFileSystem* FS = Infinity::Graphics::GetDevice()->getFileSystem();
std::vector<const irr::io::path> SearchDirectories;
 
FindDirectoriesInDirectory(FS, SearchDirectories, "./Models");
 
for (auto Dir : SearchDirectories)
{
    std::cout << Dir.c_str() << std::endl;
}
Dream Big Or Go Home.
Help Me Help You.
Post Reply