方法一:(MFC)
BOOL DeleteDirectory(const CString& csDirPath)
{
BOOL bRes = FALSE;
CString csAllFiles = csDirPath;
csAllFiles.Trim();
if(csAllFiles.IsEmpty())
{
return FALSE;
}
CString csRight = csAllFiles.Right(1);
if (_T("\\") != csRight && _T("/") != csRight)
{
csAllFiles += _T("\\");
}
csAllFiles += _T("*.*");
CString csFileFullPath;
// First, delete files and its sub directories
CFileFind fileFind; // Need include <afx.h>
BOOL bFound = fileFind.FindFile(csAllFiles);
while(bFound)
{
bFound = fileFind.FindNextFile();
csFileFullPath = fileFind.GetFilePath();
if (!fileFind.IsDots())
{
SetFileAttributes(csFileFullPath, FILE_ATTRIBUTE_NORMAL);
// Take off read-only attribute
if(fileFind.IsDirectory())
{
// recurse to delete directory
bRes = DeleteDirectory(csFileFullPath);
}
else
{
// delete file
bRes = DeleteFile(csFileFullPath);
}
}
}
fileFind.Close();
//Delete directory
bRes = RemoveDirectory(csDirPath);
return bRes;
}
方法二:(WinAPI)
BOOL ExecuteDelete(const CString& csPath, const WIN32_FIND_DATA& find);
BOOL DeleteDirectory(const CString& csDirPath)
{
BOOL bRes = FALSE;
CString csPath = csDirPath;
csPath.Trim();
if(csPath.IsEmpty())
{
return FALSE;
}
CString csRight = csPath.Right(1);
if (_T("\\") != csRight && _T("/") != csRight)
{
csPath += _T("\\");
}
HANDLE hFind;
WIN32_FIND_DATA find;
hFind = ::FindFirstFile(csPath + _T("*.*"), &find);
if (INVALID_HANDLE_VALUE != hFind)
{
bRes = ExecuteDelete(csPath, find);
while(::FindNextFile(hFind, &find))
{
bRes = ExecuteDelete(csPath, find);
}
::FindClose (hFind);
}
bRes = RemoveDirectory(csPath);
return bRes;
}
BOOL ExecuteDelete(const CString& csPath, const WIN32_FIND_DATA& find)
{
BOOL bRet = FALSE;
CString fileName = find.cFileName;
if (0 != fileName.Compare(_T(".")) && 0 != fileName.Compare(_T("..")) )
{
fileName = csPath + fileName;
if (find.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
bRet = DeleteDirectory(fileName);
}
else
{
bRet = DeleteFile(fileName);
}
}
return bRet;
}
分享到:
相关推荐
vc中删除文件夹以及文件夹中的内容的三种方法,以及解决XP删除文件夹出错的方法!!
VC中的文件操作,判断文件、文件夹是否存在 、删除文件夹、求文件夹大小.很详细
源码 复制和删除整个文件夹的例子,分别采用了通过WinBase.h中的基本操作函数和ShlwApi.h中的SHFileOperation来实现文件夹的复制和删除操作。 工程中包含VC6.0和VS2010两个版本。
用第归思想删除文件夹,是用VC6.0建立的工程,用VC6.0直接打开运行即可。
VC 删除不为空的文件夹,通常情况下,删除的文件夹中都是带有文件的,那么有时候会弹出一个奇怪的提示:“删除的文件夹非空”,这是怎么一回事呢?希望这个源码能为你找到答案。
输入目录,可以自动把目录下所以vc工程中的debug文件自动删除,可以节约磁盘空间保存。
该文档记录了如何在VC6中删除指定文件夹下的文件,包含程序代码
vc 创建-删除文件夹!已经调试成功!vc 创建-删除文件夹!已经调试成功!
用vc6.0做的可以实现文件夹的复制,移动,删除。并且有文件说明。 复制、移动、删除的文件夹下的所有文件包括子文件夹。 使用时注意在代码中修改所复制、移动、删除的文件夹路径,就可以使用了。
用MFC实现删除文件夹下所有文件!
文件夹监测工具VC源代码 监测文件夹内的文件添加,删除,改动等 这个代码是网上搜到的,源代码中有作者的出处
主要用于删除VC编译生成的文件夹debug和release,因为这两个文件夹下的文件太浪费空间了。 利用STL中的queue来存储文件夹名,实现非递归来查找指定的文件夹debug和release。 其实就是找到一个文件夹就加入文件夹队列...
c中提供的对文件夹操作的函数,只能对空文件夹进行 删除,这使很多初学者在编码过程中产生许多困扰,我也 很不爽这件事情,所以编写这个对非空文件夹进行删除的 函数,仅供参考。 注意:本函数编写以VC6为依据,...
乌龙寺技术站的BAT强制删除源码,可以强制删除指定文件夹
递归删除文件夹 代码简洁易懂
选择一个文件夹,递归删除文件夹下所有符合文件名的文件或者文件夹
1. VC6 只能在系统中存在一份,继续之前,必须删除系统中已经安装的 VC6; 2. 将下载的压缩包解压缩; 3. 执行 setup,打开 VC6 设置窗口; 4. 点“修复 VC6”修复其他 VC6 对系统造成的错误(新装系统无需执行这步...
vc工程编译会生成占用大量空间的中间文件,写这个小程序的初衷就是删除下面vc自动生成的,留下有用的源代码好打包,当然你也可以用作它用. 使用前可以先删除回收站,这样方便批量恢复这一次的删除 取消掉了大的MFC90....
(1)为什么某个类突然在工作区间里面突然看不见了? 只是类隐藏了,打开FILEVIEW,...再关闭项目,从实际的文件夹中删除对应的.h和.cpp文件;再删除.clw文件。 最后打开项目,rebuild all。 ……………… ………………
本文实例讲述了VC中删除类的两种操作方法。分享给大家供大家参考。具体方法如下: 方法一: 应该是先在windows里面删除.h和.cpp文件,然后打开项目,Ctrl-W打开Class wizard,选这个Dialog类,然后提示找不到了,选...