`
hanyezhiyu8
  • 浏览: 153643 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

VC中删除文件夹中内容

阅读更多

方法一:(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中删除文件夹以及文件夹中的内容的三种方法

    vc中删除文件夹以及文件夹中的内容的三种方法,以及解决XP删除文件夹出错的方法!!

    VC中的文件操作,判断文件、文件夹是否存在 、删除文件夹、求文件夹大小

    VC中的文件操作,判断文件、文件夹是否存在 、删除文件夹、求文件夹大小.很详细

    复制和删除整个文件夹的VC源码

    源码 复制和删除整个文件夹的例子,分别采用了通过WinBase.h中的基本操作函数和ShlwApi.h中的SHFileOperation来实现文件夹的复制和删除操作。 工程中包含VC6.0和VS2010两个版本。

    VC6.0删除文件夹例子

    用第归思想删除文件夹,是用VC6.0建立的工程,用VC6.0直接打开运行即可。

    VC 删除不为空的文件夹.rar

    VC 删除不为空的文件夹,通常情况下,删除的文件夹中都是带有文件的,那么有时候会弹出一个奇怪的提示:“删除的文件夹非空”,这是怎么一回事呢?希望这个源码能为你找到答案。

    VC 删除debug文件夹源代码

    输入目录,可以自动把目录下所以vc工程中的debug文件自动删除,可以节约磁盘空间保存。

    VC6程序中删除指定文件夹下的文件

    该文档记录了如何在VC6中删除指定文件夹下的文件,包含程序代码

    vc 创建-删除文件夹!已经调试成功!

    vc 创建-删除文件夹!已经调试成功!vc 创建-删除文件夹!已经调试成功!

    vc 文件夹的复制,移动,删除

    用vc6.0做的可以实现文件夹的复制,移动,删除。并且有文件说明。 复制、移动、删除的文件夹下的所有文件包括子文件夹。 使用时注意在代码中修改所复制、移动、删除的文件夹路径,就可以使用了。

    删除文件夹所有文件

    用MFC实现删除文件夹下所有文件!

    文件夹监测工具VC源代码

    文件夹监测工具VC源代码 监测文件夹内的文件添加,删除,改动等 这个代码是网上搜到的,源代码中有作者的出处

    删除debug和release文件夹

    主要用于删除VC编译生成的文件夹debug和release,因为这两个文件夹下的文件太浪费空间了。 利用STL中的queue来存储文件夹名,实现非递归来查找指定的文件夹debug和release。 其实就是找到一个文件夹就加入文件夹队列...

    c删除非空文件夹的函数

    c中提供的对文件夹操作的函数,只能对空文件夹进行 删除,这使很多初学者在编码过程中产生许多困扰,我也 很不爽这件事情,所以编写这个对非空文件夹进行删除的 函数,仅供参考。 注意:本函数编写以VC6为依据,...

    批处理删除文件夹源码

    乌龙寺技术站的BAT强制删除源码,可以强制删除指定文件夹

    VC++ 递归删除文件夹

    递归删除文件夹 代码简洁易懂

    VC++ 递归文件夹

    选择一个文件夹,递归删除文件夹下所有符合文件名的文件或者文件夹

    VC6.0免安装版(英文)

    1. VC6 只能在系统中存在一份,继续之前,必须删除系统中已经安装的 VC6; 2. 将下载的压缩包解压缩; 3. 执行 setup,打开 VC6 设置窗口; 4. 点“修复 VC6”修复其他 VC6 对系统造成的错误(新装系统无需执行这步...

    支持正则表达式的文件夹删除工具

    vc工程编译会生成占用大量空间的中间文件,写这个小程序的初衷就是删除下面vc自动生成的,留下有用的源代码好打包,当然你也可以用作它用. 使用前可以先删除回收站,这样方便批量恢复这一次的删除 取消掉了大的MFC90....

    VC中常见问题

    (1)为什么某个类突然在工作区间里面突然看不见了? 只是类隐藏了,打开FILEVIEW,...再关闭项目,从实际的文件夹中删除对应的.h和.cpp文件;再删除.clw文件。 最后打开项目,rebuild all。 ……………… ………………

    VC中删除类的两种操作方法

    本文实例讲述了VC中删除类的两种操作方法。分享给大家供大家参考。具体方法如下: 方法一: 应该是先在windows里面删除.h和.cpp文件,然后打开项目,Ctrl-W打开Class wizard,选这个Dialog类,然后提示找不到了,选...

Global site tag (gtag.js) - Google Analytics