Empty Directory Utility Under NT

Environment: Tested on Windows NT (SP5) with Visual C++ 6 (SP4)


What is it ?

A "Del [Path\]*.*" /sxyz" NT utility.


I had to write a "Empty Directory" utility on WIN NT, without using Shell. So I wrote this function. I think it can be usefull for programmers who don't have time to learn Files under NT.
This is a recursive function which delete all the directories and files inside the directory sent as a parameter (sPath). The Parameter 'sPath' has to be a full path name without "\\" at the end.
So is it !

Attention !

With this call, you can empty every directory also important one. I am not responsible for deleting important data with my Code !

Return Value:

TRUE if the directory exists,
FALSE if it not.


// Include this line before your code where you call 
// this function !
BOOL EmptyDirectory(CString &sPath);

// This is a recursive function which empty a directory path 
// of its files and call itself if necessary to delete
// subdirectories.
BOOL EmptyDirectory(CString &sPath)
 CFileFind finder;

 CString  sWildCard = sPath + "\\*.*";

 BOOL bFound;
 BOOL bWorking = finder.FindFile(sWildCard);

 bFound = bWorking;

 while (bWorking) 
  bWorking = finder.FindNextFile();

  if (finder.IsDots()) continue;

  if (finder.IsDirectory()) 
   CString s = finder.GetFilePath();
  _unlink( finder.GetFilePath() );


 return bFound;


  • Thanks

    Posted by Legacy on 08/06/2003 12:00am

    Originally posted by: vijay


  • Just a small helpful addition...

    Posted by Legacy on 04/22/2003 12:00am

    Originally posted by: Eyes`Only


    If you add the line...


    ... right before your line ...

    CString sWildCard = sPath + "\\*.*";

    ... you effectively remove the requirement "The Parameter 'sPath' has to be a full path name without "\\" at the end."

    Just in case anyone wants to errorproof their code the easy way :)


  • you just won the first place! congrats.

    Posted by Legacy on 04/13/2003 12:00am

    Originally posted by: Stan

    Could it be any more trivial? Your article just won the first place in our yearly "10 most trivial pieces of code" competition.

  • Great

    Posted by Legacy on 03/12/2003 12:00am

    Originally posted by: Anuo

    Oh yeah! I just like this.

  • Big thanks from a total beginner

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

    Originally posted by: bodozer

    Thanks for the code.
    I found it very useable for my project.
    I'm totally new in VC++.
    I used BC++ (for DOS) 10-15 years ago.

    regards bodozer,

  • read only directory

    Posted by Legacy on 09/09/2002 12:00am

    Originally posted by: brownbro

    What if the directory is read only ? I've had challenges in the past with RemoveDirectory() returning an error when the directory is read only.

  • NON-MFC Version

    Posted by Legacy on 07/18/2002 12:00am

    Originally posted by: J.T. Gilkeson

    Here's the NON-MFC version:

    // This is a recursive function which empty a directory path
    // of its files and call itself if necessary to delete
    // subdirectories.
    BOOL EmptyDirectory(LPCSTR lpFolder)
    WIN32_FIND_DATA ff;
    char absPath[MAX_PATH];
    char lpDeleteFolder[MAX_PATH];

    strcpy(lpDeleteFolder, lpFolder);
    strcat(lpDeleteFolder, "\\*.*");

    HANDLE hFile = FindFirstFile(lpDeleteFolder, &ff);
    BOOL bWorking = (INVALID_HANDLE_VALUE != hFile);
    BOOL bFound = bWorking;

    while (bWorking)
    strcpy(absPath, lpFolder);
    strcat(absPath, "\\");
    strcat(absPath, ff.cFileName);

    if ((0 == strcmp(ff.cFileName, ".")) || (0 == strcmp(ff.cFileName, "..")))
    else if (ff.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
    // RECURSIVE CASE: Call with subdirectory

    bWorking = FindNextFile(hFile, &ff);

    //BASE CASE: No more subdirs

    return bFound;


    Posted by Legacy on 03/10/2002 12:00am

    Originally posted by: Dian Suharto

    Simple, nice and working code.


    Dian Suharto

  • great code

    Posted by Legacy on 02/19/2002 12:00am

    Originally posted by: anand

    great code.It simplified my work

  • Great for beginners

    Posted by Legacy on 02/11/2002 12:00am

    Originally posted by: Chris Hunter

    I am just beginning Visual C++ programming. I found this article and it looks to be extremely helpful. I just wanted to say thanks.

  • Loading, Please Wait ...

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

Top White Papers and Webcasts

  • Anthony Christie, the Chief Marketing Officer for Level Communications, is responsible for customer experience, worldwide marketing and product management. In this informative asset, he shares his insights into why a private network connection to cloud-bases applications is the right decision for your enterprise. Download now to find out more.

  • Complex hybrid environments can make it difficult to track interdependencies, increasing the risk of disrupting critical business services. In this white paper by EMA, you'll learn how application discovery and dependency mapping can help you: Meet granular targets for availability, cost, and time-to-revenue for cloud services. Accelerate mean time to repair (MTTR) while communicating better with stakeholders. Manage even the most complex hybrid environments more efficiently and effectively Understand the …

Most Popular Programming Stories

More for Developers

RSS Feeds

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