码迷,mamicode.com
首页 > 编程语言 > 详细

C/C++ 删除指定目录

时间:2015-04-07 17:48:49      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:删除目录

1.介绍

  用到shlwapi.h和tchar.h头文件。
  shlwapi.h是shlwapi.dll头文件,shlwapi.dll(Microsoft Shell Light-weight Utility Library)中定义了路径相关的操作,也包括了部分文件操作函数。由于shlwapi.dll属于Microsoft Windows Shell,因此这些文件操作特点与通过Shell进行文件操作类似。
下面列出部分常用的文件操作相关函数。

函数名 作用
PathIsDirectory 判断一个路径是否有效目录
PathIsDirectoryEmpty 判断一个路径是否空目录
PathFileExists 判断一个路径是否有效目录或文件
PathRenameExtension 更改文件的后缀名
SHFileOperation 可实现文件或目录的复制、移动、重命名和删除操作,并可一次操作多个文件或目录

  
  其中,SHFileOperation可实现整个目录的内容的复制和删除。SHFileOperation可一次实现多个目录的复制或删除,其输入参数结构体SHFILEOPSTRUCT中的pFrom(源目录)和pTo(目的目录)都可以输入多个目录,目录之间通过’\0’分割,pFrom和pTo必须以2个’\0’结尾。一般情况下,我们都只是对一个目录操作,因此,SHFileOperation调用并不是很方便,下面就对SHFileOperation进行包装,提供更方便调用的目录操作函数。

代码

BOOL SHDeleteFolder(LPCTSTR pstrFolder)
{
    int iPathLen = _tcslen(pstrFolder);
    TCHAR tczFolder[MAX_PATH+1];
    SHFILEOPSTRUCT FileOp; 

    if ((NULL == pstrFolder))
    {
        return FALSE;
    }


    if (iPathLen >= MAX_PATH)
    {
        return FALSE;
    }

    /*确保目录的路径以2个\0结尾*/
    ZeroMemory(tczFolder, (MAX_PATH+1)*sizeof(TCHAR));
    _tcscpy(tczFolder, pstrFolder);
    tczFolder[iPathLen] = _T(‘\0‘);
    tczFolder[iPathLen+1] = _T(‘\0‘);

    ZeroMemory(&FileOp, sizeof(SHFILEOPSTRUCT)); 
    FileOp.fFlags |= FOF_SILENT;            //不显示进度
    FileOp.fFlags |= FOF_NOERRORUI;         //不报告错误信息
    FileOp.fFlags |= FOF_NOCONFIRMATION;    //直接删除,不进行确认
    FileOp.hNameMappings = NULL;
    FileOp.hwnd = NULL;
    FileOp.lpszProgressTitle = NULL;
    FileOp.wFunc = FO_DELETE;
    FileOp.pFrom = tczFolder;               //要删除的目录,必须以2个\0结尾
    FileOp.pTo = NULL; 

    FileOp.fFlags &= ~FOF_ALLOWUNDO;       //直接删除,不放入回收站

    /*删除目录*/
    if (0 == SHFileOperation(&FileOp))
    {
        return TRUE;
    }
    else
    {
        return FALSE;
    }
}

3. 测试

int main()
{
    SHDeleteFolder("D:\\removeFile");
    return 0;
}

C/C++ 删除指定目录

标签:删除目录

原文地址:http://blog.csdn.net/jeanphorn/article/details/44921315

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!