删除一个非空目录(2种方法)
来源:互联网 发布:开心网域名被抢注案例 编辑:程序博客网 时间:2024/05/22 18:12
1、如果不进行递归删除。你可以使用API函数SHFileOperation,它可以一次删除目录及其下面的子目录和文件。
示例代码:
BOOL DelTree(LPCTSTR lpszPath)
{
SHFILEOPSTRUCT FileOp;
FileOp.fFlags = FOF_NOCONFIRMATION;
FileOp.hNameMappings = NULL;
FileOp.hwnd = NULL;
FileOp.lpszProgressTitle = NULL;
FileOp.pFrom = lpszPath;
FileOp.pTo = NULL;
FileOp.wFunc = FO_DELETE;
return SHFileOperation(&FileOp) == 0;
}
2、使用递归调用,逐个删除:
示例代码:
BOOL DeleteDirectory(char *DirName)//如删除 DeleteDirectory("c://aaa")
{
CFileFind tempFind;
char tempFileFind[MAX_PATH];
sprintf(tempFileFind,"%s//*.*",DirName);
BOOL IsFinded=(BOOL)tempFind.FindFile(tempFileFind);
while(IsFinded)
{
IsFinded=(BOOL)tempFind.FindNextFile();
if(!tempFind.IsDots())
{
char foundFileName[MAX_PATH];
strcpy(foundFileName,tempFind.GetFileName().GetBuffer(MAX_PATH));
if(tempFind.IsDirectory())
{
char tempDir[MAX_PATH];
sprintf(tempDir,"%s//%s",DirName,foundFileName);
DeleteDirectory(tempDir);
}
else
{
char tempFileName[MAX_PATH];
sprintf(tempFileName,"%s//%s",DirName,foundFileName);
DeleteFile(tempFileName);
}
}
}
tempFind.Close();
if(!RemoveDirectory(DirName))
{
MessageBox(0,"删除目录失败!","警告信息",MB_OK);//比如没有找到文件夹,删除失败,可把此句删除
return FALSE;
}
return TRUE;
}
示例代码:
BOOL DelTree(LPCTSTR lpszPath)
{
SHFILEOPSTRUCT FileOp;
FileOp.fFlags = FOF_NOCONFIRMATION;
FileOp.hNameMappings = NULL;
FileOp.hwnd = NULL;
FileOp.lpszProgressTitle = NULL;
FileOp.pFrom = lpszPath;
FileOp.pTo = NULL;
FileOp.wFunc = FO_DELETE;
return SHFileOperation(&FileOp) == 0;
}
2、使用递归调用,逐个删除:
示例代码:
BOOL DeleteDirectory(char *DirName)//如删除 DeleteDirectory("c://aaa")
{
CFileFind tempFind;
char tempFileFind[MAX_PATH];
sprintf(tempFileFind,"%s//*.*",DirName);
BOOL IsFinded=(BOOL)tempFind.FindFile(tempFileFind);
while(IsFinded)
{
IsFinded=(BOOL)tempFind.FindNextFile();
if(!tempFind.IsDots())
{
char foundFileName[MAX_PATH];
strcpy(foundFileName,tempFind.GetFileName().GetBuffer(MAX_PATH));
if(tempFind.IsDirectory())
{
char tempDir[MAX_PATH];
sprintf(tempDir,"%s//%s",DirName,foundFileName);
DeleteDirectory(tempDir);
}
else
{
char tempFileName[MAX_PATH];
sprintf(tempFileName,"%s//%s",DirName,foundFileName);
DeleteFile(tempFileName);
}
}
}
tempFind.Close();
if(!RemoveDirectory(DirName))
{
MessageBox(0,"删除目录失败!","警告信息",MB_OK);//比如没有找到文件夹,删除失败,可把此句删除
return FALSE;
}
return TRUE;
}
- 删除一个非空目录(2种方法)
- 删除一个非空目录方法
- 删除一个非空目录
- windows下删除一个非空目录的两种方法
- python删除非空目录的方法
- 删除非空目录
- 删除文件夹(非空目录)
- 如何用JAVA删除一个非空的目录
- EVC删除非空目录
- 删除多级非空目录
- EVC删除非空目录
- EVC删除非空目录
- 删除非空目录文件夹
- 嵌套删除非空目录
- 删除非空目录(Windows)
- 删除文件夹目录(非空)
- linux删除非空目录
- 递归删除非空目录
- Head First C#中文版 图文皆译 (page5)
- 转贴-有关TinyXML使用的简单总结
- GuruReborn开博拉!
- asp网页不能正常浏览的解决方法
- ucos学习笔记01---OSUnMapTbl的理解
- 删除一个非空目录(2种方法)
- ucos学习笔记02--内存复制的操作
- -- arm7,44b0x,bootloader,完全分析(收藏)
- Table Name Fixer
- 我刚玩上了 穿越火线 有谁能告诉我开透视么····
- 一元多项式运算
- 藏地密码1: 阅读完毕 用时1天
- 进制转换(十进制转n进制)
- PHP通用分页类(支持php,ajax,html) v1.1.20100329修正版