您的位置:首页 > 运维架构

对文件夹的操作 SHFileOperation()的使用

2011-09-04 20:41 260 查看
 
SHFileOperation()函数主要对文件夹有四种操作:复制,删除,移动,重命名。

挤时间对这个函数进行了利用了一下。写了四个函数。可以很好的对文件夹进行操作。

/////////////////////////////////////

//函数名:DeleteFolder

//输入参数:LpszPath 要删除的路径指针

//作用:删除指定文件夹以及里面的文件

//

/////////////////////////////////////

BOOL DeleteFolder(LPCTSTR lpszPath)

{

    int nLength = strlen(lpszPath);

char *NewPath = new char[nLength+2];

strcpy(NewPath,lpszPath);

NewPath[nLength] = '\0';

NewPath[nLength+1] = '\0';

SHFILEOPSTRUCT FileOp;

ZeroMemory((void*)&FileOp,sizeof(SHFILEOPSTRUCT));

FileOp.fFlags = FOF_NOCONFIRMATION;

FileOp.hNameMappings = NULL;

FileOp.hwnd = NULL;

FileOp.lpszProgressTitle = NULL;

FileOp.pFrom = NewPath;

FileOp.pTo = NULL;

FileOp.wFunc = FO_DELETE;  

return SHFileOperation(&FileOp) == 0;

}

/////////////////////////////////////

//函数名:CopyFolder

//参数:lpszFromPath 源文件夹的路径 。 lpszToPath 目的文件夹的路径

//作用:拷贝文件夹及其文件夹中的所有内容

//

//////////////////////////////////////

BOOL CopyFolder(LPCTSTR lpszFromPath,LPCTSTR lpszToPath)

{

int nLengthFrm = strlen(lpszFromPath);

char *NewPathFrm = new char[nLengthFrm+2];

strcpy(NewPathFrm,lpszFromPath);

NewPathFrm[nLengthFrm] = '\0';

NewPathFrm[nLengthFrm+1] = '\0';

    SHFILEOPSTRUCT FileOp;

    ZeroMemory((void*)&FileOp,sizeof(SHFILEOPSTRUCT));

   

    FileOp.fFlags = FOF_NOCONFIRMATION ;

    FileOp.hNameMappings = NULL;

    FileOp.hwnd = NULL;

    FileOp.lpszProgressTitle = NULL;

    FileOp.pFrom = NewPathFrm;

    FileOp.pTo = lpszToPath;

    FileOp.wFunc = FO_COPY;

   

    return SHFileOperation(&FileOp) == 0;

}

/////////////////////////////////////

//函数名:MoveFolder

//参数:lpszFromPath 源文件夹路径 。lpszToPath 目的文件夹路径

//作用:移动原文件夹及其中文件都指定的路径下

//

/////////////////////////////////////

BOOL MoveFolder(LPCTSTR lpszFromPath,LPCTSTR lpszToPath)

{

int nLengthFrm = strlen(lpszFromPath);

char *NewPathFrm = new char[nLengthFrm+2];

strcpy(NewPathFrm,lpszFromPath);

NewPathFrm[nLengthFrm] = '\0';

NewPathFrm[nLengthFrm+1] = '\0';

    SHFILEOPSTRUCT FileOp;

    ZeroMemory((void*)&FileOp,sizeof(SHFILEOPSTRUCT));

   

    FileOp.fFlags = FOF_NOCONFIRMATION ;

    FileOp.hNameMappings = NULL;

    FileOp.hwnd = NULL;

    FileOp.lpszProgressTitle = NULL;

    FileOp.pFrom = NewPathFrm;

    FileOp.pTo = lpszToPath;

    FileOp.wFunc = FO_MOVE;

   

    return SHFileOperation(&FileOp) == 0;

}

/////////////////////////////////////

//ReNameFolder

//参数:lpszFromPath 源文件夹路径 。lpszToPath 目的文件夹路径

//作用:修改原文件夹的名字。

//

/////////////////////////////////////

BOOL ReNameFolder(LPCTSTR lpszFromPath,LPCTSTR lpszToPath)

{

int nLengthFrm = strlen(lpszFromPath);

char *NewPathFrm = new char[nLengthFrm+2];

strcpy(NewPathFrm,lpszFromPath);

NewPathFrm[nLengthFrm] = '\0';

NewPathFrm[nLengthFrm+1] = '\0';

    SHFILEOPSTRUCT FileOp;

    ZeroMemory((void*)&FileOp,sizeof(SHFILEOPSTRUCT));

   

    FileOp.fFlags = FOF_NOCONFIRMATION ;

    FileOp.hNameMappings = NULL;

    FileOp.hwnd = NULL;

    FileOp.lpszProgressTitle = NULL;

    FileOp.pFrom = NewPathFrm;

    FileOp.pTo = lpszToPath;

    FileOp.wFunc = FO_RENAME;

   

    return SHFileOperation(&FileOp) == 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  null delete