本人用CreateDirectory创建一个文件夹
然后将一些文件拷贝进去
再通过CFileFind类,搜索所有的文件,将文件删除
最后要用RemoveDirectory删除这个文件夹,但文件夹总是无法删除不知哪位高人指点一下!还有,要删除一个非空文件夹,比较好的办法是什么?
然后将一些文件拷贝进去
再通过CFileFind类,搜索所有的文件,将文件删除
最后要用RemoveDirectory删除这个文件夹,但文件夹总是无法删除不知哪位高人指点一下!还有,要删除一个非空文件夹,比较好的办法是什么?
删除空目录:
RemoveDirectory("c:\\dd");
删除不为空目录
void CTestDlg::RecursiveDelete(CString szPath)
{
CFileFind ff;
CString path=szPath;
if(szPath=="")
return;
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.IsDots())
continue;
else if(ff.IsDirectory())
{
//是目录时继续递归,删除该目录下的文件
path=ff.GetFilePath();
RecursiveDelete(path);
//目录为空后删除目录
RemoveDirectory(path);
}
}
ff.Close();//如果没有此句,则无法删除最上层的目录
RemoveDirectory(szPath);
}
什么都伞了
#include <direct.h>
void DeleteDirFile(CString sPath)
{
WIN32_FIND_DATA fd;
HANDLE hFind = ::FindFirstFile(sPath + "*.*",&fd);
if (hFind != INVALID_HANDLE_VALUE)
{
while (::FindNextFile(hFind,&fd))
{
//判断是否为目录
if (fd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)
{
CString name;
name = fd.cFileName;
//判断是否为.和..
if ((name != ".") && (name != ".."))
{
//如果是真正的目录,进行递归
DeleteDirFile(sPath + fd.cFileName + "\\");
}
}
else
DeleteFile(sPath + fd.cFileName);
}
::FindClose(hFind);
}
RemoveDirectory(sPath);
}
void DeleteDirectory2(CString strDir)
{
CFileFind ff;
CString szDir = strDir;
if(szDir.Right(1) != "\\")
szDir += "\\";
szDir += "*.*";
BOOL res = ff.FindFile(szDir);
while( res )
{
res = ff.FindNextFile();
if(ff.IsDirectory() && !ff.IsDots())
{
CString strPath = ff.GetFilePath();
CString strTitle = ff.GetFileTitle();
DeleteDirectory2(strPath);
RemoveDirectory(strPath);
}
else if(!ff.IsDirectory() && !ff.IsDots())
{
CString path=ff.GetFilePath();
DeleteFile(path);
}
}
ff.Close();
RemoveDirectory(strDir);
}//////////////////////////////方法二结束//////////////////////////////////////////
SHFILEOPSTRUCT shfileop;
shfileop.hwnd = NULL;
shfileop.wFunc = FO_DELETE ;
shfileop.fFlags = FOF_SILENT | FOF_NOCONFIRMATION ;
shfileop.pFrom = "c:\\Download1";
shfileop.pTo = "";
shfileop.lpszProgressTitle = "";
shfileop.fAnyOperationsAborted = TRUE;
int nOK = SHFileOperation(&shfileop);
你可以参考下面的帖子
http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=193461