如何删除一个文件夹下的所有文件? 我已经知道了一个文件夹的路径和名字现在我想删除该文件夹下所有文件但是不知道如何知道这些所有文件,我想用remove一个个删除文件大侠们有什么高招? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 都是一个个删除的:while(文件夹不空){deletefile;} http://expert.csdn.net/Expert/topic/1976/1976296.xml?temp=.4221155 /*函数原型:BOOL DeleteDirectory(char *pszDirName);返回值:成功删除时返回TRUE,否则返回FALSE参数pszDirName为要删除的目录名,必须为绝对路径名,如“c:\\temp"。函数定义如下:*/BOOL CUserCustom::DeleteDirectory(char *pszDirName){ CFileFind tempFind; char tempFileFind[200]; sprintf(tempFileFind,"%s\\*.*",pszDirName); BOOL IsFinded=(BOOL)tempFind.FindFile(tempFileFind); while(IsFinded) { IsFinded=(BOOL)tempFind.FindNextFile(); if(!tempFind.IsDots()) { char foundFileName[200]; strcpy(foundFileName,tempFind.GetFileName().GetBuffer(200)); if(tempFind.IsDirectory()) { char tempDir[200]; sprintf(tempDir,"%s\\%s",pszDirName,foundFileName); DeleteDirectory(tempDir); } else { char tempFileName[200]; sprintf(tempFileName,"%s\\%s",pszDirName,foundFileName); DeleteFile(tempFileName); } } } tempFind.Close(); RemoveDirectory(pszDirName); return TRUE;} 有没有函数直接将该文件夹Delete掉?而不需要遍历所有文件? 好像没有直接的api可以用。只有自己遍历文件夹了。 用SHFileOperation(),这个函数很好用,具体看MSDN 使用SHFileOperation可以删除整个目录,不过有一个需要注意的是,路径参数必须已'\0'结尾,否则会出错,Try it 用递归 要删除一个目录,我们要完成下面几步: 1. 删除该目录下的所有文件 2. 如果该目录中还有子目录我们要递归地调用DeleteDirectory(LPCTSTR DirName)函数,以删除该子目录下的所有文件 3. 调用RemoveDirectory(LPCTSTR lpPathName)删除该目录DeleteDirectory(LPCTSTR DirName)函数的完整实现如下:BOOL DeleteDirectory(LPCTSTR DirName){CFileFind tempFind; file://声明一个CFileFind类变量,以用来搜索char tempFileFind[200]; file://用于定义搜索格式sprintf(tempFileFind,"%s\\*.*",DirName);file://匹配格式为*.*,即该目录下的所有文件 BOOL IsFinded=(BOOL)tempFind.FindFile(tempFileFind);file://查找第一个文件while(IsFinded){IsFinded=(BOOL)tempFind.FindNextFile(); file://递归搜索其他的文件 if(!tempFind.IsDots()) file://如果不是"."目录{char foundFileName[200];strcpy(foundFileName,tempFind.GetFileName().GetBuffer(200));if(tempFind.IsDirectory()) file://如果是目录,则递归地调用{ file://DeleteDirectorychar tempDir[200];sprintf(tempDir,"%s\\%s",DirName,foundFileName);DeleteDirectory(tempDir);}else{ file://如果是文件则直接删除之char tempFileName[200];sprintf(tempFileName,"%s\\%s",DirName,foundFileName);DeleteFile(tempFileName);}}}tempFind.Close();if(!RemoveDirectory(DirName)) file://删除目录{AfxMessageBox("删除目录失败!",MB_OK);return FALSE;}return TRUE;} #include <SHELLAPI.H>void main(){ char buf[64]; SHFILEOPSTRUCT fo; memset(buf, 0, sizeof(buf)); memset(&fo, 0, sizeof(fo)); strcpy(buf, "D:\\12\\*.*\0"); fo.wFunc = FO_DELETE; fo.pFrom = buf; SHFileOperation(&fo); RemoveDirectory("D:\\12");} 建议使用SHFileOperation 一来方便 二来稳当 SHFileOperation 强大 好用 地球银都知道! WinExec("cmd.exe /c rd /s /q d:\test ", SW_SHOW); 上上楼的朋友没说错。我也有一个办法system("cmd /c del d:\\test\\*.*");或者system("command /c del d:\\test\\*.*");就可以了。 我这里有一个情况大家讨论一下1、remove好象不能删除只读文件2、rmdir删除失败当我删除当前文件下一个子目录我文件是用资源管理器打开因此这个子目录文件夹名称在左面树列表里还能够显示这个时候我用rmdir删除当前文件夹就失败这个是不是微软的bug? remove删除之前可以设置文件的属性 删除很多文件的目录很快,为什么?就是没有一个个删除,而是直接在fat表删除该目录,其下的所有东西就被认为删掉了。你可以看看Windows自己删除的时候。 简单的函数调用问题 求助,几个比较杂的问题,困惑中 一个复杂问题,是高手就请进,在线等待,急急急 新手上路寻求帮助和建议 VC6支持标准C++么? 怎么画斜着的椭圆 一个新建文档的问题。。。自动最大化 数据库问题,请帮忙!!!记录集只能访问几张表! 两个局域网上的应用程序通讯?(会给分的哦) SQLConfigDataSource()最后一个参数具体怎么用啊? 如何设计一个多线程的并发的基于UDP协议的服务器?谢谢 怎样判断一个向量(这个向量一端固定)是否在其旋转范围之内???
while(文件夹不空)
{
deletefile;
}
函数原型:BOOL DeleteDirectory(char *pszDirName);
返回值:成功删除时返回TRUE,否则返回FALSE
参数pszDirName为要删除的目录名,必须为绝对路径名,如“c:\\temp"。
函数定义如下:
*/
BOOL CUserCustom::DeleteDirectory(char *pszDirName)
{
CFileFind tempFind;
char tempFileFind[200];
sprintf(tempFileFind,"%s\\*.*",pszDirName);
BOOL IsFinded=(BOOL)tempFind.FindFile(tempFileFind);
while(IsFinded)
{
IsFinded=(BOOL)tempFind.FindNextFile();
if(!tempFind.IsDots())
{
char foundFileName[200];
strcpy(foundFileName,tempFind.GetFileName().GetBuffer(200));
if(tempFind.IsDirectory())
{
char tempDir[200];
sprintf(tempDir,"%s\\%s",pszDirName,foundFileName);
DeleteDirectory(tempDir);
}
else
{
char tempFileName[200];
sprintf(tempFileName,"%s\\%s",pszDirName,foundFileName);
DeleteFile(tempFileName);
}
}
}
tempFind.Close();
RemoveDirectory(pszDirName);
return TRUE;
}
要删除一个目录,我们要完成下面几步: 1. 删除该目录下的所有文件 2. 如果该目录中还有子目录我们要递归地调用DeleteDirectory(LPCTSTR DirName)函数,以删除该子目录下的所有文件 3. 调用RemoveDirectory(LPCTSTR lpPathName)删除该目录
DeleteDirectory(LPCTSTR DirName)函数的完整实现如下:
BOOL DeleteDirectory(LPCTSTR DirName)
{
CFileFind tempFind; file://声明一个CFileFind类变量,以用来搜索
char tempFileFind[200]; file://用于定义搜索格式
sprintf(tempFileFind,"%s\\*.*",DirName);
file://匹配格式为*.*,即该目录下的所有文件 BOOL IsFinded=(BOOL)tempFind.FindFile(tempFileFind);
file://查找第一个文件
while(IsFinded)
{
IsFinded=(BOOL)tempFind.FindNextFile(); file://递归搜索其他的文件
if(!tempFind.IsDots()) file://如果不是"."目录
{
char foundFileName[200];
strcpy(foundFileName,tempFind.GetFileName().GetBuffer(200));
if(tempFind.IsDirectory()) file://如果是目录,则递归地调用
{ file://DeleteDirectory
char tempDir[200];
sprintf(tempDir,"%s\\%s",DirName,foundFileName);
DeleteDirectory(tempDir);
}
else
{ file://如果是文件则直接删除之
char tempFileName[200];
sprintf(tempFileName,"%s\\%s",DirName,foundFileName);
DeleteFile(tempFileName);
}
}
}
tempFind.Close();
if(!RemoveDirectory(DirName)) file://删除目录
{
AfxMessageBox("删除目录失败!",MB_OK);
return FALSE;
}
return TRUE;
}
void main()
{
char buf[64];
SHFILEOPSTRUCT fo; memset(buf, 0, sizeof(buf));
memset(&fo, 0, sizeof(fo));
strcpy(buf, "D:\\12\\*.*\0");
fo.wFunc = FO_DELETE;
fo.pFrom = buf; SHFileOperation(&fo); RemoveDirectory("D:\\12");}
1、remove好象不能删除只读文件
2、rmdir删除失败
当我删除当前文件下一个子目录
我文件是用资源管理器打开
因此这个子目录文件夹名称在左面树列表里还能够显示
这个时候我用rmdir删除当前文件夹就失败
这个是不是微软的bug?
就是没有一个个删除,而是直接在fat表删除该目录,其下的所有东西就被认为删掉了。
你可以看看Windows自己删除的时候。