#include
<stdlib.h>
#include <direct.h>
#include <string.h>
#include <io.h>
#include <stdio.h>
#include <iostream>
#include <conio.h>
#include <process.h>
#include <windows.h>
using namespace std;
#define BUF_SIZE 256int copyFile(const char * pSrc,const char *pDes){
FILE *in_file, *out_file;char data[BUF_SIZE];size_t bytes_in, bytes_out;long len = 0;if ( (in_file = fopen(pSrc, "rb")) == NULL ){perror(pSrc);return -2;}if ( (out_file = fopen(pDes, "wb")) == NULL ){perror(pDes);return -3;}while ( (bytes_in = fread(data, 1, BUF_SIZE, in_file)) > 0 ){bytes_out = fwrite(data, 1, bytes_in, out_file);if ( bytes_in != bytes_out ){perror("Fatal write error.\n");return -4;}len += bytes_out;printf("copying file .... %d bytes copy\n", len);}fclose(in_file);fclose(out_file);return 1;}
/*********************************************************************
功能:复制(非空)目录
参数:pSrc,原目录名
pDes,目标目录名返回:<0,失败
>0,成功作者:liuyuanan 2013-04-10*********************************************************************/
int copyDir(const char * pSrc,const char *pDes){
if (NULL == pSrc || NULL == pDes) return -1;mkdir(pDes);char dir[MAX_PATH] = {0};char srcFileName[MAX_PATH] = {0};char desFileName[MAX_PATH] = {0};char *str = "\\*.*";strcpy(dir,pSrc);strcat(dir,str);//首先查找dir中符合要求的文件long hFile;_finddata_t fileinfo;if ((hFile = _findfirst(dir,&fileinfo)) != -1){do{strcpy(srcFileName,pSrc);strcat(srcFileName,"\\");strcat(srcFileName,fileinfo.name);strcpy(desFileName,pDes);strcat(desFileName,"\\");strcat(desFileName,fileinfo.name);//检查是不是目录//如果不是目录,则进行处理文件夹下面的文件if (!(fileinfo.attrib & _A_SUBDIR)){copyFile(srcFileName,desFileName);}else//处理目录,递归调用{if ( strcmp(fileinfo.name, "." ) != 0 && strcmp(fileinfo.name, ".." ) != 0 ){copyDir(srcFileName,desFileName);}}} while (_findnext(hFile,&fileinfo) == 0);_findclose(hFile);return 1;}return -3;}
int main(int argc, char* argv[]){
std::cout << "please wait ...";copyDir("D:\\project.KeyManagerClient","D:\\project.KeyManagerClient - 副本");std::cout << "ok";return 0;}