c++删除文件夹
来源:互联网 发布:家政网络平台 编辑:程序博客网 时间:2024/06/08 00:16
转自:http://blog.csdn.net/sshhbb/archive/2010/12/07/6061029.aspx
c++语言本身是不能删除文件或文件夹的,他们是windows操作系统里的东西,所以得借助其api函数。
其一:使用shell 接口:
void FileDelete(CString directory)
{
SHFILEOPSTRUCT shFileOp;
char strCurrentPath[MAX_PATH];
memset(&shFileOp,0,sizeof(shFileOp));
GetCurrentDirectory(MAX_PATH,strCurrentPath);
strcat_s(strCurrentPath,sizeof(strCurrentPath),directory);
strCurrentPath[strlen(strCurrentPath)+1] = 0;
shFileOp.wFunc = FO_DELETE;
shFileOp.pFrom = strCurrentPath;
shFileOp.pTo = NULL;
shFileOp.fFlags = FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR;
SHFileOperation(&shFileOp);
}
使用该函数你得 #include<Shlwapi.h> #pragma comment(lib,"Shlwapi.lib") 使用他可以将directory和其下的所有文件静默删除,听说在删除共享文件夹的时候会出错或提示,没试过。不过我使用system()做删除的时候共享文件夹下的删除是会出错的。
其二: 使用MFC的CFileFind递归遍历文件并删除文件和文件夹
bool DeleteDirectory(char* strDirName)
{
CFileFind tempFind;
char strTempFileFind[MAX_PATH];
sprintf(strTempFileFind,"%s//*.*", strDirName);
BOOL IsFinded = tempFind.FindFile(strTempFileFind);
while (IsFinded)
{
IsFinded = tempFind.FindNextFile();
if (!tempFind.IsDots())
{
char strFoundFileName[MAX_PATH];
strcpy(strFoundFileName, tempFind.GetFileName().GetBuffer(MAX_PATH));
if (tempFind.IsDirectory())
{
char strTempDir[MAX_PATH];
sprintf(strTempDir,"%s//%s", strDirName, strFoundFileName);
DeleteDirectory(strTempDir);
}
else
{
char strTempFileName[MAX_PATH];
sprintf(strTempFileName,"%s//%s", strDirName, strFoundFileName);
DeleteFile(sTempFileName);
}
}
}
tempFind.Close();
if(!RemoveDirectory(strDirName))
{
return FALSE;
}
return TRUE;
}
//////////////////////////////////////////////////////////////////////////////////////
转自:http://zhidao.baidu.com/question/188089955.html
#include <stdlib.h>#include <stdio.h>#include <string.h>void main(){ char str[120] ="RMDIR /S "; //加上 /Q 删除时不要求确认 char str2[100]; //文件夹的绝对路径 printf("输入的文件夹位置为:/n"); scanf("%s",str2); strcat(str,str2); system(str); system("pause");}
<p> </p><pre class="answer-content" name="code" style="white-space: pre-wrap; word-wrap: break-word;">方便的办法,你可以使用dos命令,在C++里可以用system调用比如system("RMDIR aaa");就是删掉aaa这个目录dos命令可以在cmd里打help回车查看
////////////////////////////////////////////////////////////////////////////
<a target=_blank href="http://topic.csdn.net/u/20090126/23/950e840e-8ba9-4be7-94ba-2e48e7cdf862.html" style="color: rgb(51, 102, 153); text-decoration: none;">http://topic.csdn.net/u/20090126/23/950e840e-8ba9-4be7-94ba-2e48e7cdf862.html</a>
BOOL DeleteDir(<span style="color: rgb(0, 0, 255);">char</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);"> path){ WIN32_FIND_DATA finddata; HANDLE hfind; </span><span style="color: rgb(0, 0, 255);">char</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);"> pdir; pdir</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">char</span><span style="color: rgb(0, 0, 0);">[strlen(path)</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(128, 0, 128);">5</span><span style="color: rgb(0, 0, 0);">]; strcpy(pdir,path); </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(path[strlen(path)</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(128, 0, 128);">1</span><span style="color: rgb(0, 0, 0);">]</span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(128, 0, 0);">'</span><span style="color: rgb(128, 0, 0);">//</span><span style="color: rgb(128, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">) strcat(pdir,</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">//*.*</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">); </span><span style="color: rgb(0, 0, 255);">else</span><span style="color: rgb(0, 0, 0);"> strcat(pdir,</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">*.*</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">); hfind</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">FindFirstFile(pdir,</span><span style="color: rgb(0, 0, 0);">&</span><span style="color: rgb(0, 0, 0);">finddata); </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(hfind</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">INVALID_HANDLE_VALUE) </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> FALSE; delete []pdir; </span><span style="color: rgb(0, 0, 255);">do</span><span style="color: rgb(0, 0, 0);"> { pdir</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">char</span><span style="color: rgb(0, 0, 0);">[strlen(path)</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">strlen(finddata.cFileName)</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(128, 0, 128);">2</span><span style="color: rgb(0, 0, 0);">]; sprintf(pdir,</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">%s//%s</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,path,finddata.cFileName); </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(strcmp(finddata.cFileName,</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">.</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">)</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(128, 0, 128);">0</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">||</span><span style="color: rgb(0, 0, 0);">strcmp(finddata.cFileName,</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">..</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">)</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(128, 0, 128);">0</span><span style="color: rgb(0, 0, 0);">) { RemoveDirectory(pdir); </span><span style="color: rgb(0, 0, 255);">continue</span><span style="color: rgb(0, 0, 0);">; } </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">((finddata.dwFileAttributes </span><span style="color: rgb(0, 0, 0);">&</span><span style="color: rgb(0, 0, 0);"> FILE_ATTRIBUTE_DIRECTORY)</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(128, 0, 128);">0</span><span style="color: rgb(0, 0, 0);">) DeleteFile(pdir); </span><span style="color: rgb(0, 0, 255);">else</span><span style="color: rgb(0, 0, 0);"> DeleteDir(pdir); delete []pdir; }</span><span style="color: rgb(0, 0, 255);">while</span><span style="color: rgb(0, 0, 0);">(FindNextFile(hfind,</span><span style="color: rgb(0, 0, 0);">&</span><span style="color: rgb(0, 0, 0);">finddata)); </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(RemoveDirectory(path)) </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> TRUE; </span><span style="color: rgb(0, 0, 255);">else</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> FALSE;}</span>//////////////////////////////////////////////////////////////////////
<p>转自:<a target=_blank href="http://zhidao.baidu.com/question/96292128.html" style="color: rgb(51, 102, 153); text-decoration: none;">http://zhidao.baidu.com/question/96292128.html</a></p><h3 style="margin: 0px; padding: 0px;"><span class="link_title">c++删除空文件夹</span></h3>使用方法:char dir[] = "d://test//";DeleteEmptyDirectories(dir);/////////////////////////////////////////////////////void DeleteEmptyDirectories(const char *dir){WIN32_FIND_DATA finder; HANDLE hFileFind; char search[MAX_PATH];strcpy(search, dir);strcat(search, "*.*"); hFileFind = FindFirstFile(search, &finder); if (hFileFind != INVALID_HANDLE_VALUE) { do { char path[MAX_PATH]; strcpy(path, dir); strcat(path, finder.cFileName); if ((finder.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && strcmp(finder.cFileName, ".") && strcmp(finder.cFileName, "..")) { char subdir[MAX_PATH]; strcpy(subdir, path); strcat(subdir, "//"); DeleteEmptyDirectories(subdir); // AfxMessageBox(subdir); RemoveDirectory(path); } } while (FindNextFile(hFileFind, &finder) != 0); FindClose(hFileFind); }}
另外,用SHFILEOPSTRUCT、SHFileOperation也可以删除文件夹。
- Linux C 删除文件夹
- C、 C++遍历文件夹,删除文件夹
- 【C#】创建文件夹,删除文件夹,创建文件,删除文件
- C#NTFS格式磁盘中空文件夹删除
- C语言删除文件夹下的目录
- C 实现删除非空文件夹
- c/c++创建删除文件 文件夹
- C/C++创建和删除文件夹操作
- C语言实现递归删除文件夹
- C/C++创建和删除文件夹操作
- C/C++创建和删除文件夹操作
- C/C++创建和删除文件夹操作
- C/C++ 生成文件夹 删除文件夹 获取运行文件路径
- C#/删除文件夹和拷贝文件夹的方法
- C Sharp(C#)中如何删除文件(文件夹)
- 删除文件夹
- 删除文件夹
- 删除文件夹
- 密码传输问题
- WP8版本520 Out of Memory 的解决方法
- 怎么成为一个软件架构师
- poj字符串总结
- 解决Android SDK Manager无法更新问题
- c++删除文件夹
- 控件测试第一篇
- 新手玩Linux 之 文件系统的制作
- iOS图形动画笔记
- SPI总线驱动分析
- 并查集小结
- 内核符号表和kallsyms
- 两种自定义系统弹出键盘上方的view
- 怎样成为一个软件架构师续