高版本的MS-DOS和Windows95 都提供了一个可以删除一个或多个目录及其下属文 件和目录的命令,即DeleteTree命令。然而,无论在MFC类库 还是在Win32函数库中,都没有相应的函数与之对应。这 样,当我们在自己设计的应用程序中需要用到DeleteTree 的功能时,自然想到的方法是通过进程调用或者系统 调用的方式(正如上面部分所述的那样)调用MD-DOS或Windows 95下的DeleteTree命令。然而,Win32函数库已经为我们提供了多种用于文件和目录操作的函数,利用它们不难设计出自己的DeleteTree()函数。读者读到这里,也许会感到有些疑惑,为什么第六部分强调进程调用优于自我设计的函数,而这一部分又反了过来?是的,在通常情况下,调用应用程序内部的函数比使用进程或者调用外部函数更灵活并且可以提高执行效率,也便于修改。所以,象DeleteTree()这样的功能,利用现有的函数并不难实现,自然就最好通过内部函数的方式来完成。然而,象设计一个压缩/解压缩这样的函数的工作量,并不比通过进程调用来使用现成品的开销更合算,因为它至少需要我们了解压缩/解压缩的复杂算法,而且调试和维护它也需要一定代价。于是,这个时候,还是采用“拿来主义”为好。
下面,给出我自己设计的DeleteTree()函数,仅供参考。
BOOL DeleteTree(CString DirName)
{ //成功:返回TRUE;否则,返回FALSE
BOOL Result;
Result=PreRemoveDirectory(DirName)
&& RemoveDirectory(DirName);
return Result;
}
BOOL PreRemoveDirectory(CString DirName)
{//成功:返回TRUE;否则,返回FALSE
LPTSTR lpBuffer;
UINT uSize;
CString fileName;
HANDLE hHeap;
BOOL result;
HANDLE hFindFile;
WIN32_FIND_DATA FindFileData;
uSize=(GetCurrentDirectory(0,NULL))*sizeof(TCHAR);
hHeap=GetProcessHeap();
lpBuffer=(LPSTR)HeapAlloc(hHeap,HEAP_ZERO_MEMORY,uSize);
GetCurrentDirectory(uSize,lpBuffer);
if (lpBuffer!=DirName) {//调整当前目录
SetCurrentDirectory(DirName);
}
hFindFile=FindFirstFile("*.*",&FindFileData);
CString tFile;
if (hFindFile!=INVALID_HANDLE_VALUE) {
do {
tFile=FindFileData.cFileName;
if ((tFile==".")||(tFile=="..")) continue;
if (FindFileData.dwFileAttributes==
FILE_ATTRIBUTE_DIRECTORY){
if (DirName[DirName.GetLength()-1]!='\\')
PreRemoveDirectory(DirName+'\\'+tFile);
else
PreRemoveDirectory(DirName+tFile);
if (!RemoveDirectory(tFile))
result=FALSE;
else
result=TRUE;
}
else
if (!DeleteFile(tFile)) result=FALSE;
else result=TRUE;
}
while (FindNextFile(hFindFile,&FindFileData));
FindClose(hFindFile);
}
else {
SetCurrentDirectory(lpBuffer);
return FALSE;
}
SetCurrentDirectory(lpBuffer); //回复到原来的目录下
return result;
}
分享到:
相关推荐
此Demo是基于VS2010 C++开发的,用于删除指定目录及其下所有的文件夹,文件的工具。里面包含VS工程源码。
数字信号处理自编制函数-数字信号处理自编函数.zip 与大家一起分享快乐!
最优化问题的自编函数,基于matlab的自编函数,及其他数学软件的自编函数,解决整数线性规划,整数非线性规划,及各种最优问题的自编函数
matlab自编插值函数myinter.m,解决插值问题.希望能够对您有所帮助~~
使用函数回调的方式删除文件夹的所有文件,封装为一个函数,今后直接调用即可。 并制作一个demo,基于vs2008,函数本身支持所有版本的vs
python删除文件的函数 Python是一种高级编程语言,它提供了许多内置函数和模块,可以轻松地完成各种任务。其中之一就是删除文件。在本文中,我们将介绍如何使用Python删除文件的函数。 Python中删除文件的函数是os....
麦语言自编策略模型函数列表
自编Matlab函数实现图像缩放 自编Matlab函数实现图像缩放 自编Matlab函数实现图像缩放 自编Matlab函数实现图像缩放 自编Matlab函数实现图像缩放
自己编的FFT以及FFT2函数,从复数定义以及复数的运算开始写的,比较慢……
最小二乘法Matlab自编函数实现及示例.doc
word文件 随机信号及其自相关函数和功率谱密度的实现
1、删除目录及目录下所有的文件 2、删除目录下的所有文件但目录结构保留 3、删除指定文件 代码如下 /** +----------------------------------------------------------------------------------------- * 删除...
NULL 博文链接:https://onestopweb.iteye.com/blog/2340902
PHP删除一个目录及目录下的文件代码,即删除目录或删除文件。
本代码使用c语言,可执行递归删除指定文件夹下所有的文件(包含文件以及文件夹)的操作,注释详细,易于使用或修改
画出13位巴克码的时域波形及其自相关函数
易语言一个自编的加解密函数源码,一个自编的加解密函数,加解密文本
delphi 文件目录操作函数,delphi 文件目录操作函数
C文件操作函数C文件操作函数文件操作函数