Creating Mulitple Levels of Directories

I was writing a custom installation script and needed to create many sub directories. I looked at Brad Gutilla's article and thought that there had to be a simpler method. Recursion steps in and saves the day. Not much to say about the code, as it is pretty simple and easy to follow.
void CreateAllDirectories(CString strDir)
{
 // remove ending / if exists
 if(strDir.Right(1)=="\\")
  strDir=strDir.Left(strDir.GetLength()-1); 

 // base case . . .if directory exists
 if(GetFileAttributes(strDir)!=-1) 
  return;

 // recursive call, one less directory
 int nFound = strDir.ReverseFind('\\');
 CreateAllDirectories(strDir.Left(nFound)); 

 // actual work
 CreateDirectory(strDir,NULL); 
}


Comments

  • I used MakeSureDirectoryPathExists successfully

    Posted by Legacy on 11/16/2001 12:00am

    Originally posted by: Adrian Vinca

    So, I used MakeSureDirectoryPathExists from Imagehlp.h (instead of Dbghelp.h - I don't know where may I find this file). Do not forget to add to your project also Imagehlp.lib.

    Reply
  • A much more optimized method

    Posted by Legacy on 08/13/2001 12:00am

    Originally posted by: Anonymous

    int
    
    CreateAllDirectories(
    char* pszDir
    )
    {
    char* pszLastSlash;
    char cTmp;

    if( _access( pszDir, 0 ) != -1 )
    {
    // it already exists
    return 0;
    }

    pszLastSlash = strrchr( pszDir, '\\' );
    if ( pszLastSlash )
    {
    cTmp = *pszLastSlash;
    *pszLastSlash = '\0';

    // try again with one less dir

    CreateAllDirectories( pszDir );

    *pszLastSlash = cTmp;
    }


    if ( _mkdir( pszDir ) == -1 )
    {
    return -1;
    }

    return 0;
    }

    Reply
  • why not to use the api...

    Posted by Legacy on 07/25/2001 12:00am

    Originally posted by: Kevin

    I looked and my default installation of VC and whatever SDKs I have installed do not have the Dbghelp.h file. So I am assuming that I would have to go thru the trouble of installing something else to get this. I am also assuming this means another DLL would have to go with my executable...

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Live Event Date: March 19, 2015 @ 1:00 p.m. ET / 10:00 a.m. PT The 2015 Enterprise Mobile Application Survey asked 250 mobility professionals what their biggest mobile challenges are, how many employees they are equipping with mobile apps, and their methods for driving value with mobility. Join Dan Woods, Editor and CTO of CITO Research, and Alan Murray, SVP of Products at Apperian, as they break down the results of this survey and discuss how enterprises are using mobile application management and private …

  • The advent of compute accelerators, special purpose coprocessors that significantly improve the performance of traditional host-based central processing unit (CPU) computations, represents a major transition in the tools available to achieve supercomputing power. This white paper presents Dell solution offerings and shows how they push the envelope of available solutions that bring immediate added value to HPC users in terms of integration, flexibility, and efficiency of hybrid compute solutions.

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date