关闭

整目录copy(WIN API)

284人阅读 评论(0) 收藏 举报
分类:

一个API版本的目录copy函数


BOOL CopyFiles(CString szSrcDir, CString szDestDir, BOOL bfailIfExists)
{
	if (!PathIsDirectory(szSrcDir))
	{
		return FALSE;
	}
	WIN32_FIND_DATA findFileData;
	HANDLE hFind = ::FindFirstFile(szSrcDir + _T("*.*"), &findFileData);
	if (INVALID_HANDLE_VALUE == hFind)
	{
		return FALSE;
	}
	BOOL bRet = TRUE;
	while(bRet)
	{
		if(findFileData.cFileName[0] != _T('.'))
		{
			CString csFileName = findFileData.cFileName;
			if (findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
			{
				int bRet = SHCreateDirectoryEx(NULL,szDestDir+csFileName,NULL);
				if (bRet == ERROR_SUCCESS || bRet == ERROR_ALREADY_EXISTS)
				{
					BOOL bRet = CopyFiles(szSrcDir+csFileName+_T("\\"), szDestDir+csFileName+_T("\\"), bfailIfExists);
					if (!bRet)
					{
						CloseHandle(hFind);
						return FALSE;
					}
				}
			}
			else
			{
				BOOL bRet =CopyFile(szSrcDir+csFileName, szDestDir+csFileName, bfailIfExists);
				if (!bRet)
				{
					CloseHandle(hFind);
					return FALSE;
				}
			}
		}
		bRet =::FindNextFile(hFind, &findFileData);
	}
	FindClose(hFind);
	return TRUE;
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:48008次
    • 积分:1216
    • 等级:
    • 排名:千里之外
    • 原创:72篇
    • 转载:13篇
    • 译文:1篇
    • 评论:1条
    文章分类
    最新评论