首页 > 其他分享 >文件夹递归copy的源代码

文件夹递归copy的源代码

时间:2023-01-27 21:31:07浏览次数:106  
标签:tmpFile 源代码 CString NULL cFileName 文件夹 FindFileData copy tmpFrom

/***************************************************************************************************
** 函数名 :CopyFolder
** 输 入 :const CString &desc 目的路径
** const CString &source 源路径
** 输 出:
** 功能描述:文件夹递归copy
** 全局变量:
** 调用模块:
** 作 者:刘志永
** 日 期:2008-9-10
** 修 改:
** 日 期:
** 版 本:
***************************************************************************************************/
BOOL CFolderOperater::CopyFolder(const CString &desc, const CString &source)
{
try
{
CString tmpFrom(source);
CString tmpTo(desc);
if (!PathFileExists(tmpTo))
{
CreateDirectory(tmpTo,NULL);
}
if (PathFileExists(tmpFrom))
{
WIN32_FIND_DATA FindFileData;
CString tmpFind(tmpFrom);
tmpFind += _T("//*.*"); HANDLE hFind=::FindFirstFile(tmpFind,&FindFileData);
if(INVALID_HANDLE_VALUE == hFind)
return false; while(TRUE)
{
CString tmpFile(tmpTo);
tmpFile += _T("//");
tmpFile += FindFileData.cFileName; if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) //目录
{
if(FindFileData.cFileName[0]!='.')
{
if (!PathFileExists(tmpFile)) //目录不存在
{
CreateDirectory(tmpFile,NULL);
} CopyFolder(tmpFile,tmpFrom + _T("//") + FindFileData.cFileName);
}
}
else //文件
{
CString sExtention=PathFindExtension(tmpFile);
if (!PathFileExists(tmpFile)) //文件不存在
{
CopyFile(tmpFrom + _T("//") + FindFileData.cFileName,tmpFile,TRUE); //拷贝文件
}
else if(sExtention!=_T(".mdb"))
{
CopyFile(tmpFrom + _T("//") + FindFileData.cFileName,tmpFile,TRUE); //拷贝文件
}
else if (sExtention==_T(".mdb"))//数据是扩展名是access数据库 就进行更改目的数据库名称 然后进行复制
{
// int dwMinSize = WideCharToMultiByte(CP_OEMCP,NULL,tmpFile,-1,NULL,0,NULL,FALSE);
// char lpszStr[MAX_PATH+1];
// WideCharToMultiByte(CP_OEMCP,NULL,tmpFile,-1,lpszStr,dwMinSize,NULL,FALSE);
WCHAR wFlag='//';
int nPos=tmpFile.ReverseFind(wFlag);
int nLen=tmpFile.GetLength();
CString sFront=tmpFile.Mid(0,nPos);
CString sBack=_T("old.mdb") ;
CString sNewName=sFront+_T("//")+sBack;
//int dwNewMinSize=WideCharToMultiByte(CP_OEMCP,NULL,sNewName,-1,NULL,0,NULL,FALSE);
//char lpszNewStr[MAX_PATH+1];
// WideCharToMultiByte(CP_OEMCP,NULL,sNewName,-1,lpszNewStr,dwNewMinSize,NULL,FALSE);
rename(tmpFile,sNewName);
CopyFile(tmpFrom + _T("//") + FindFileData.cFileName,tmpFile,TRUE); //拷贝文件
CDbRestore dbrestore;
dbrestore.RestoreData(tmpFile,sNewName);
DeleteFile(sNewName);
}
} if(!FindNextFile(hFind,&FindFileData))
break;
}
FindClose(hFind);
} return TRUE;
}
catch (...)
{
return FALSE;
}
}

标签:tmpFile,源代码,CString,NULL,cFileName,文件夹,FindFileData,copy,tmpFrom
From: https://blog.51cto.com/u_15942605/6024365

相关文章

  • CopyFile函数
    CopyFile函數,文件拷贝函数.其基本結構如下:copyfile(lpcstrlpexistingfilename,//源文件路径lpcstrlpnewfilename......
  • RTree源代码——C语言实现
    RTree源代码——C语言实现cheungmine一、什么是RTree“R树是B树向多维空间发展的另一种形式,它将空间对象按范围划分,每个结点都对应一个区域和一个磁盘页,非叶结点的磁盘页中......
  • 上交自瞄算法开源代码-装甲板识别功能分析
    前言开源代码github网址:GitHub-xinyang-go/SJTU-RM-CV-2019:上海交通大学RoboMaster2019赛季视觉代码这里着重分析主函数main.cpp与装甲板识别部分的工程文件armer......
  • 【小记】copy 与 copy_backward
    copy与copy_backwardcopy从前往后复制,result参数指向目标容器的begin位置copy*backward从后往前复制,···end位置Possibleimplementationtemplate<class......
  • struct task_struct 源代码
    //structtask_struct代码structtask_struct{#ifdefCONFIG_THREAD_INFO_IN_TASK /* *Forreasonsofheadersoup(seecurrent_thread_info()),this *......
  • 【原创】NES第十波:解说一个NES音乐贺卡的源代码
    我将自己写的一编音乐贺卡源代码拿来做解说。完整的工程和源代码见最后面的下载链接。之前的解说都是保姆级的。从这一章开始,就变得简洁了。 一、定义内存变量(汇编都是......
  • 批量拉取/git pull 指定文件夹下面所有 Git 项目的最新代码
    背景因为工作需要,当前所负责的项目较多;但是人力紧缺,其中绝大部分项目平时也不会去跟进迭代。所以经常需要批量拉取最新的代码查看最新的改动。解决方案一键批量拉取指定......
  • Win32拷贝文件夹
    下面的代码展示了如何拷贝文件夹:BOOLCopyDir(LPCTSTRlpszSrcDir,LPCTSTRlpszDstDir){SHFILEOPSTRUCTsfo;ZeroMemory(&sfo,sizeof(sfo));sf......
  • win10 sshfs 挂载linux文件夹
    ​​welcometomyblog​​在linux服务器跑实验后,需要把实验结果提交到指定的网址上,此时还得把文件传回win10,然后再上传,感觉太繁琐了,去谷歌上找了直接挂载linux......
  • Informer源代码学习记录之“数据集处理”
    一、源码代码核心exp_informer.py: #获取数据集处理类, 选取的数据集为'weather',数据集处理类Dataset_CustomData=data_dict[self.args.dat......