EVC下把一个文件夹复制到另一个目录

一:

CString   StrSourceFolder=_T( "//硬盘//新建文件夹 ");
CString   StrDestFolder=_T( "//Hard   Disk ");
        TCHAR   SourceFolder[MAX_PATH+1]=_T( " ");
wcscpy(SourceFolder,StrSourceFolder);
TCHAR   TargetFolder[MAX_PATH+1]=_T( " ");
wcscpy(TargetFolder,StrDestFolder);
SHFILEOPSTRUCT   lpFile;
lpFile.hwnd=GetSafeHwnd();
lpFile.wFunc=FO_COPY;
lpFile.pFrom=SourceFolder;
lpFile.pTo=TargetFolder;
lpFile.fFlags=FOF_ALLOWUNDO;
lpFile.fAnyOperationsAborted=FALSE;
lpFile.hNameMappings=NULL;
lpFile.lpszProgressTitle=NULL;
int   ReturnValue=SHFileOperation(&lpFile);
if   (ReturnValue==0)
{
if   (lpFile.fAnyOperationsAborted==TRUE)
        MessageBox(_T( "复制文件夹操作被取消 "),_T( "信息提示 "),MB_OK+MB_ICONWARNING);
                else
MessageBox(_T( "备份文件夹操作成功 "),_T( "信息提示 "),MB_OK+MB_ICONWARNING);
   
}
else
MessageBox(_T( "复制文件夹操作失败 "),_T( "信息提示 "),MB_OK+MB_ICONEXCLAMATION);

 

二:

BOOL   CopyFromTo(const   TCHAR   *   source,const   TCHAR   *   dest)
{
HANDLE   hFileFind   =   INVALID_HANDLE_VALUE;
WIN32_FIND_DATA   wfd;
TCHAR   szTemp[MAX_PATH]   =   {0};
TCHAR   szTemp2[MAX_PATH]={0};

_stprintf(szTemp,_T( "%s//*.* "),source);
hFileFind   =   FindFirstFile(szTemp,&wfd);
if(hFileFind   ==   INVALID_HANDLE_VALUE)
return   FALSE;
do
{
if(   wfd.cFileName   !=   _T( ". ")   &&   wfd.cFileName   !=   _T( ".. ")   )
{
if(wfd.dwFileAttributes   &   FILE_ATTRIBUTE_DIRECTORY)
{
memset(szTemp,0x00,sizeof(szTemp));
memset(szTemp2,0x00,sizeof(szTemp2));
_stprintf(szTemp,_T( "%s//%s "),source,wfd.cFileName);
_stprintf(szTemp2,_T( "%s//%s "),dest,wfd.cFileName);
CreateDirectory(szTemp2,NULL);
CopyFromTo(szTemp,szTemp2);
}
else
{
memset(szTemp,0x00,sizeof(szTemp));
memset(szTemp2,0x00,sizeof(szTemp2));
_stprintf(szTemp,_T( "%s//%s "),source,wfd.cFileName);
_stprintf(szTemp2,_T( "%s//%s "),dest,wfd.cFileName);
CopyFile(szTemp,szTemp2,FALSE);
}
}
}while(FindNextFile(hFileFind,&wfd));
FindClose(hFileFind);
return   TRUE;
}

 

三:

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;
}

内容概要:本文详细介绍了文生视频大模型及AI人应用方案的设计与实现。文章首先阐述了文生视频大模型的技术基础,包括深度生成模型、自然语言处理(NLP)和计算机视觉(CV)的深度融合,以及相关技术的发展趋势。接着,文章深入分析了需求,包括用户需求、市场现状和技术需求,明确了高效性、个性化和成本控制等关键点。系统架构设计部分涵盖了数据层、模型层、服务层和应用层的分层架构,确保系统的可扩展性和高效性。在关键技术实现方面,文章详细描述了文本解析与理解、视频生成技术、AI人交互技术和实时处理与反馈机制。此外,还探讨了数据管理与安全、系统测试与验证、部署与维护等重要环节。最后,文章展示了文生视频大模型在教育、娱乐和商业领域的应用场景,并对其未来的技术改进方向和市场前景进行了展望。 适用人群:具备一定技术背景的研发人员、产品经理、数据科学家以及对AI视频生成技术感兴趣的从业者。 使用场景及目标:①帮助研发人员理解文生视频大模型的技术实现和应用场景;②指导产品经理在实际项目中应用文生视频大模型;③为数据科学家提供技术优化和模型改进的思路;④让从业者了解AI视频生成技术的市场潜力和发展趋势。 阅读建议:本文内容详尽,涉及多个技术细节和应用场景,建议读者结合自身的专业背景和技术需求,重点阅读与自己工作相关的章节,并结合实际项目进行实践和验证。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值