Click here to Skip to main content
16,004,782 members
Articles / Desktop Programming / MFC
Article

Delete folders, subfolders and files easily

Rate me:
Please Sign up or sign in to vote.
4.31/5 (12 votes)
20 Feb 2002 262.3K   30   46
This article shows you how to delete all the files and subfolders in a selected folder

Introduction

I Created this to show you how to delete all the files and subfolders in a selected folder including subfolders. It's very easy to understand and it's all by using the MFC (CFileFind, with some API functions)

void RecursiveDelete(CString szPath)
{
	CFileFind ff;
	CString path = szPath;
	
	if(path.Right(1) != "\\")
		path += "\\";

	path += "*.*";

	BOOL res = ff.FindFile(path);

	while(res)
	{
		res = ff.FindNextFile();
		if (!ff.IsDots() && !ff.IsDirectory())
			DeleteFile(ff.GetFilePath());
		else if (ff.IsDirectory())
		{
			path = ff.GetFilePath();
			RecursiveDelete(path);
			RemoveDirectory(path);
		}
	}
}

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Canada Canada
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
GeneralMy vote of 5 Pin
Rahul (Software Engineer)28-Sep-12 3:07
Rahul (Software Engineer)28-Sep-12 3:07 
Generalthank you, I used it on Win CE Pin
juankre2-Oct-11 10:22
juankre2-Oct-11 10:22 
GeneralMultiple File Creation/Deletion Pin
RockSai30-Nov-08 6:03
RockSai30-Nov-08 6:03 
GeneralCannot delete folder Pin
atans9-Jul-07 16:30
atans9-Jul-07 16:30 
GeneralRe: Cannot delete folder Pin
atans9-Jul-07 18:16
atans9-Jul-07 18:16 
Generalone condition is missing Pin
bjdodo7-Feb-07 5:12
bjdodo7-Feb-07 5:12 
QuestionWhy its not deleting the folders which contsins files? Pin
RaoSanthosh7-Sep-06 3:21
RaoSanthosh7-Sep-06 3:21 
GeneralI get an infinte loop with this code Pin
haleyana24-May-04 7:03
haleyana24-May-04 7:03 
GeneralRe: I get an infinte loop with this code Pin
andyvinc24-May-04 8:03
andyvinc24-May-04 8:03 
GeneralRe: I get an infinte loop with this code Pin
Anonymous20-May-05 3:27
Anonymous20-May-05 3:27 
GeneralDeleting file folder after reboot Pin
Balkrishna Talele20-Apr-04 20:55
Balkrishna Talele20-Apr-04 20:55 
GeneralRemoveDirectory() not found Pin
satya19756-Nov-03 5:45
satya19756-Nov-03 5:45 
GeneralRe: RemoveDirectory() not found Pin
Ravi Bhavnani6-Nov-03 6:29
professionalRavi Bhavnani6-Nov-03 6:29 
GeneralI have found it Pin
satya19756-Nov-03 6:52
satya19756-Nov-03 6:52 
GeneralDeleteFile() may fail. Pin
Anonymous9-Dec-02 9:20
Anonymous9-Dec-02 9:20 
GeneralFinally one that works! Pin
26-Feb-02 2:36
suss26-Feb-02 2:36 
RecursiveDelete() has a bug, it will attempt to delete the folders '.' and '..'! Below is the corrected code plus it does what it says it does...
RemoveDirectoryRecursive(X) will remove the contents of folder X and remove folder X itself! Oh... and I've tested it !

void RemoveDirectoryRecursive(CString szPath)
{
// Removes the folder szPath after removing all its
// contents including its sub-folders and their contents
//
// The following block {..} limits the scope of ff
{
CFileFind ff;
CString path = szPath;

if(path.Right(1) != "\\")
path += "\\";

path += "*.*";

BOOL res = ff.FindFile(path);

while(res)
{
res = ff.FindNextFile();
if (ff.IsDots())
continue;

if (ff.IsDirectory())
{
path = ff.GetFilePath();
RemoveDirectoryRecursive(path);
RemoveDirectory(path);
}
else
DeleteFile(ff.GetFilePath());
}
}

// Remove szPath itself...

// ...Now everything under folder szPath has been removed
// and since ff is now out of scope so it no longer has
// open a handle to folder szPath

RemoveDirectory(szPath);
}

Andy G.


Andy G.
GeneralRe: Finally one that works! Pin
16-May-02 3:51
suss16-May-02 3:51 
GeneralRe: Finally one that works! Pin
Fess66219-Feb-04 21:50
Fess66219-Feb-04 21:50 
GeneralRe: Finally one that works! Pin
sfeldi1-Mar-04 22:03
sfeldi1-Mar-04 22:03 
GeneralRe: Finally one that works! Pin
Anonymous11-Oct-05 2:27
Anonymous11-Oct-05 2:27 
QuestionDeleted files ----> recycle bin ??? Pin
26-Feb-02 0:14
suss26-Feb-02 0:14 
AnswerRe: Deleted files ----> recycle bin ??? Pin
Mustafa Demirhan27-Feb-02 20:36
Mustafa Demirhan27-Feb-02 20:36 
Generalthanks Pin
Mazdak21-Feb-02 23:13
Mazdak21-Feb-02 23:13 
QuestionIs this the easy way???? Pin
Mustafa Demirhan21-Feb-02 16:46
Mustafa Demirhan21-Feb-02 16:46 
AnswerRe: Is this the easy way???? Pin
BLaZiNiX21-Feb-02 16:52
BLaZiNiX21-Feb-02 16:52 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.