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

  • Lenovo recommends Windows 8 Pro. "I dropped my laptop getting out of the taxi." This probably sounds familiar to most IT professionals. If your employees are traveling, you know their devices are in for a rough go. Whether it's a trip to the conference room or a convention out of town, any time equipment leaves a user's desk it is at risk of being put into harm's way. Stay connected at all times, whether at the office or on the go, with agile, durable, and flexible devices like the Lenovo® …

  • As the mobile enterprise marketplace expands and customer needs grow more diverse, Samsung recognizes that solution partners and developers play an essential role by continually innovating to meet their customers' needs. Samsung works to provide these developers and partners with the latest tools and resources needed to create these solutions. Read this program guide to learn how the Samsung Enterprise Alliance Program provides partners and developers with Samsung enterprise software development kits (SDKs) …

Most Popular Programming Stories

More for Developers

RSS Feeds

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