/*
*
*All rights reserved
*
*文件名称: "FolderOperater.cpp
*文件标识:
*摘 要: 复制文件夹下的内容以及调用CDbRestore类
* 进行数据库表间copy
*
*当前版本:
*作 者:刘志永
*完成日期:2008-9-11
*
*取代版本:
*原作者 :
*完成日期:
*/
#include "FolderOperater.h"
#include "DbRestore.h"
#include <Shlwapi.h>
CFolderOperater::CFolderOperater(void)
{
}
CFolderOperater::~CFolderOperater(void)
{
}
/***************************************************************************************************
** 函数名 :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数据库 就进行更改目的数据库名称 然后进行复制
{
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;
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;
}
}
文件夹递归拷贝及跨数据库表间拷贝
需积分: 0 121 浏览量
更新于2008-09-18
收藏 283KB RAR 举报
在IT领域,文件管理和数据库操作是两个至关重要的方面。这里我们关注的是“文件夹递归拷贝”和“跨数据库表间拷贝”的技术实践。这两个主题分别涉及到文件系统操作和数据库数据迁移。
让我们深入理解“文件夹递归拷贝”。在计算机科学中,递归是一种解决问题的方法,它通过解决问题的子问题来解决整个问题。在文件系统中,递归拷贝通常用于复制整个目录结构,包括其下的所有子目录和文件。这在备份、迁移或同步文件时非常有用。例如,你可以编写一个脚本或程序,它遍历指定的源文件夹,对于每个子文件夹,都执行相同的操作,复制所有内容到目标位置。在编程中,常见的语言如Python、Java、C#等都有相应的API或库支持递归文件拷贝功能。例如,Python的`shutil`模块中的`copytree()`函数就是一个典型的实现。
接下来,我们探讨“跨数据库表间拷贝”。这通常涉及到数据迁移或集成,尤其是在不同的数据库系统之间。数据库间的数据迁移可能因为多种原因,比如升级数据库版本、合并数据源或者在不同环境间同步数据。这个过程需要处理数据类型转换、事务管理、数据一致性等问题。在SQL中,可以使用`INSERT INTO SELECT`语句来实现,将一个表的数据插入到另一个表中。如果涉及不同数据库系统,可能需要用到ETL(Extract, Transform, Load)工具,如Informatica、SSIS(SQL Server Integration Services)等,它们能处理数据抽取、转换和加载的复杂流程。
现在,考虑到压缩包子文件“BodyXRay”,这可能是与上述话题相关的源代码文件或者项目名称。"BodyXRay"这个名字暗示可能是一个与医学影像或诊断相关的项目,可能包含了实现文件夹递归拷贝(例如,拷贝病人的影像数据)以及跨数据库表间拷贝(例如,同步病人信息到不同系统)的功能。具体代码的分析需要查看实际的源代码才能进行,但这个名称提示了该程序可能结合了文件操作和数据库交互。
文件夹递归拷贝和跨数据库表间拷贝是IT工作中常见的任务,需要对文件系统和数据库有深入理解。无论是为了备份数据、整合系统还是其他目的,掌握这些技能都是非常有价值的。在实际应用中,需要注意数据安全、性能优化以及错误处理,确保操作的可靠性和效率。
醉心编码
- 粉丝: 1w+
- 资源: 37
最新资源
- Python编程:圣诞树控制台打印及美化技巧
- 基于javaweb的足球社区管理系统.zip
- PyCharm相关资源分享链接
- MySQL数据库安装与配置指南
- ACC自适应巡航控制模型simulink模型+carsim设置 可选购模型说明文件和操作说明(联系前请明确需求知识类不 )
- 板段差检测设备含bom工程图机械结构设计图纸和其它技术资料和技术方案非常好100%好用.zip
- MATLAB代码:考虑安全约束及热备用的电力系统机组组合研究 关键词:机组组合 直流潮流 优化调度 参考文档:自编文档,模型数据清晰明了 仿真平台:MATLAB+CPLEX gurobi平台 优势
- 基于SpringBoot+vue的IT技术交流和分享平台.zip
- 心脏病诊断数据集.zip
- 玻璃平面度检测机3D图纸和工程图机械结构设计图纸和其它技术资料和技术方案非常好100%好用.zip
- 2022最新完美运营在线客服系统源码多商户支持词库Thinkphp5.1多客服商家版源码人工客服php防黑加固源码
- springboot“共享书角”图书借还管理系统.pptx
- 笔记本按键高度及翻盖力检测含bom工程图机械结构设计图纸和其它技术资料和技术方案非常好100%好用.zip
- EasyPlayer.js H5播放器的学习
- 2021年全球疾病负担研究(GBD)残疾权重.zip
- 这是echart地图示例